对使用分页库实现的无限滚动列表项进行排序

时间:2019-02-09 12:46:04

标签: android android-recyclerview infinite-scroll android-paging

比方说,我已经使用Paging Library实现了无限滚动列表,但是现在我想给用户一个选项,以便在客户端对数据进行排序,我该怎么做?例如,我有电影数据,分页库可以很好地加载所有电影,但是如何根据收视率或发行日期对电影进行排序。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我还没有尝试过这种方法,但希望它能起作用。 假设您使用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);

希望您能掌握并希望它能奏效。干杯:)