Справочная информация: я загружаю около 60 тыс. наборов данных через веб-сервис и сохраняю их в базу данных SQLite с помощью GreenDao. Теперь я хочу получить доступ к этим 60 тысячам строк в ListView и выбрать некоторые из них (0-10). Выбранные элементы отправляются в другой ListView, содержащий только выбранные элементы. Записи базы данных составляют ~3 МБ для всех записей размером 60 тыс.
Что уже реализовано:
- БД SQLite
- DAO
- ListViews
- Адаптеры
< li>Transferlogic Data ListView --> ListView выбранных данных
Поскольку LazyList не позволяет вносить изменения в список (удалять, добавлять, очищать)
Я сделал следующее:
У ListView есть класс адаптера, который использует java.util.List в DialogFragment. Я запрашиваю LazyList (получить все) или использую EditText для применения предложения Like.
При первом запросе 60 тысяч записей я загружаю первые 50 элементов в адаптер и отображаю их в ListView. Я не хочу использовать панель навигации для последующего изменения элементов.
Я хочу, чтобы EditText работал напрямую, пока пользователь печатает, поэтому я добавил TextChangeListener.
Код: Выделить всё
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(lazyList != null) {
if(!lazyList.isClosed()) {
lazyList.close();
lazyList = null;
}
}
if(s.length()
Подробнее здесь: [url]https://stackoverflow.com/questions/35454584/how-do-i-use-greendao-lazylist-correct-for-huge-amount-of-data-sort-and-filter[/url]
Мобильная версия