powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
6 сообщений из 6, страница 1 из 1
Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
    #38255860
Kaj09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
если можно, то какие необходимо внести изменения в код на примере этого кода:

Код: java
1.
 cur = this.getContentResolver().query(CarriersDescriptor.def.CONTENT_URI, null, "[first] <= (?) and [last] >= (?)", new String[] {last, first}, null);
...
Рейтинг: 0 / 0
Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
    #38256383
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
твой вопрос, как уже повелось, не блещет точностью формулировок.

Kaj09Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
адаптеры являются источником данных для виджетов. у них есть метод sort, getCount и getItem(i).
соответственно, да, чисто технически с их помощью можно реализовать хоть ТОР100, хоть BOTTOM200. но разумно ли это делать в адаптере?

Kaj09если можно, то какие необходимо внести изменения в код на примере этого кода:

единственный способ сделать это через contentresolver (а ведь я кому-то, сильно похожему на тебя уже говорил, что он возможно совсем не нужен)
Код: java
1.
cur = this.getContentResolver().query(CarriersDescriptor.def.CONTENT_URI, null, "[first] <= (?) and [last] >= (?)", new String[] {last, first}, "sort by popularity asc limit 100 ");



но способ этот стоит разценивать как грязный хак. потому что contentresolver придумали для абстрагирования от источника данных, a передавая "sort by popularity asc limit 100 " мы жестко предполагаем, что у нас там где-то sqlite. а это может быть вовсе и не так.
...
Рейтинг: 0 / 0
Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
    #38257235
Kaj09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я хочу прибегнуть к такому выходу из-за того что мне критично время выполнения запроса, и в меньшей степени при большой выборке - количество получаемых и выводимых на экран строк.
Поэтому getCount, насколько я понимаю, будет просто выводить требуемое число записей, уже после того как будет затрачено время на вывод всех строк.

Я полагаю "грязный хак" позволит сократить время вывода, затрачиваемое на выполнение запроса?
...
Рейтинг: 0 / 0
Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
    #38257239
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kaj09Поэтому getCount, насколько я понимаю, будет просто выводить требуемое число записей, уже после того как будет затрачено время на вывод всех строк.
конечно. этим я как-бы намекаю, что адаптеры тут совершенно ни к селу.

Kaj09Я полагаю "грязный хак" позволит сократить время вывода, затрачиваемое на выполнение запроса?
ну дык зависит от кол-ва данных, наличия индексов и т.п.
...
Рейтинг: 0 / 0
Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
    #38257295
Kaj09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к сожалению грязный хак мне здесь не помог.

Добавляя "sort by popularity asc limit 100" время запроса увеличивается из-за сортировки данных , которые всё равно приходится все подгружать!

Индексы по 2 полям, по которым я делаю условие в where у меня построены. количество записей в таблице всего 50 тысяч.
Время выполнения запроса типа (на компьютере), на устройстве больше:
Код: sql
1.
select * from table where (...условие...)


к примеру 0.15 сек.
Добавляя сортировку
Код: java
1.
cur = this.getContentResolver().query(CarriersDescriptor.def.CONTENT_URI, null, "[first] <= (?) and [last] >= (?)", new String[] {last, first}, "popularity asc limit 5");


затрачиваемое время возрастает:
Код: sql
1.
select * from table where (...условие...) order by popularity asc limit 5



Если же засунуть "limit 5" в условие
Код: java
1.
cur = this.getContentResolver().query(CarriersDescriptor.def.CONTENT_URI, null, "[first] <= (?) and [last] >= (?) limit 5", new String[] {last, first}, null);


то такой запрос окажется синтаксически некорректен из-за автоматических скобок в условии
Код: sql
1.
select * from table where (...условие... limit 5) 



Вот если бы скобок не было.

Можно ли как нибудь ещё выйти из этого положения? Что можно использовать кроме адаптеров если при каждом вводе с клавиатуры нужно получить в listview данные через запрос к БД на устройстве?
...
Рейтинг: 0 / 0
Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
    #38257307
Kaj09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашёл выход. Используя сортировку по ID
Код: sql
1.
_id asc limit 100



Спасибо большое за подсказку!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли получить TOP 100 записей через SimpleCursorAdapter или просто SimpleAdapter?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]