Сортировка элементов бесконечной прокрутки, реализованная с использованием библиотеки подкачки - PullRequest
0 голосов
/ 09 февраля 2019

Допустим, я реализовал бесконечный список прокрутки с помощью Paging Library, но теперь я хочу дать пользователю возможность сортировать данные на стороне клиента, как я могу это сделать?Например, у меня есть данные фильмов, библиотека подкачки работает нормально, чтобы загрузить все фильмы, но как я могу отсортировать фильмы, например, по рейтингу или дате выпуска.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 10 февраля 2019

Я не пробовал этот метод, но надеюсь, что он работает.Предполагая, что вы используете RecyclerView для отображения списка (потому что это намного проще в recyclerView)

Когда вы получаете первые десять элементов с сервера и решаете отсортировать их. Допустим, по имени (по возрастанию).здесь нужно использовать два ArrayList: 1: finalArrayList: - который содержит весь список 2: updateArrayList: - который имеет последние десять результатов

при выборе сортировки (onButtonClick)

      updateArrayList = new ArrayList<>();
        updateArrayList.addAll(finnalArrayList);


 Collections.sort(updateArrayList, new Comparator<StoreModel>() {
      public int compare(StoreModel obj1, StoreModel obj2) {
           // ## Ascending order
           if (sortingBy == 0) {
                     return obj1.getName().compareToIgnoreCase(obj2.getName());
 }});
adapter.clear();
adapter.addAll(updateArrayList);

Запускайте этот код только при нажатии кнопки

Теперь, когда вы прокрутите вниз и получите дополнительные данные

 updateArrayList = new ArrayList<>();
 updateArrayList.add(StoreModel)//Add the latest ten data from the response

и отсортируете их перед отправкой в ​​адаптер

 Collections.sort(updateArrayList, new Comparator<StoreModel>() {
      public int compare(StoreModel obj1, StoreModel obj2) {
           // ## Ascending order
           if (sortingBy == 0) {
                     return obj1.getName().compareToIgnoreCase(obj2.getName());
 }});
 adapter.addAll(updateArrayList);

надеюсь, что вы получили это и надеюсь, что это работает.

...