Как реализовать Локальный поиск в ленивом загруженном списке в Android
У меня есть список, который содержит много данных, поэтому я реализовал ленивую загрузку в список, который загружает 10 элементов для каждого пролистывания вниз. Но я застрял в сценарии, то есть я загружаю 10 элементов за раз, но если какой-либо пользователь хочет выполнить поиск с использованием searchview, я должен выполнить поиск по всей базе данных и подготовить один и тот же список с этими результатами, и когда представление поиска будет очищено, я должен загрузить ранее загруженный список. Кто-нибудь может помочь мне решить это. Я не разместил код по соображениям безопасности. Пожалуйста, предложите способ решить эту проблему.
Спасибо
2 ответа
Сделайте одно. Создайте еще два списка массивов, которые вы используете для элементов списка.
Пусть originalArrayList, searchArrayList & tempArrayList
Шаг 1) Загрузите 10 элементов в originalArrayList и скопируйте все элементы в tempArrayList, а затем уведомите представление списка с помощью originalArrayList.
шаг 2) Добавьте слушателя изменения текста для searchEdittext
Шаг 3) Проверьте в OntextChanged метод searchEdittext, если размер searchEdittext больше 1, тогда найдите в вашей базе данных и поместите элементы во второй массив, т.е. searchArrayList и после очистки originalArrayList добавить все элементы searchArrayList в адаптер уведомлений originalArrayList
шаг 4) если searchEdittext имеет размер 0 в методе OntextChanged, то очистить originalArrayList добавить все элементы tempArrayList в адаптер уведомлений originalArrayList
Я надеюсь, что это поможет.
Подумайте об использовании Recyclerview. Это повысит производительность устройства, даже если будет огромное количество элементов.
Вы можете поместить все свои предметы (скажем, 1000 штук) в окно утилизации вместе с картой. Так что не нужно беспокоиться о смахивании и загрузке функциональности. Все ваши предметы будут храниться в viewmodel адаптера просмотра переработчика. Вы можете выполнить поиск в адаптере и отобразить отфильтрованные результаты (при условии, что данные в списке не являются исключительно большими).
https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html