【问题标题】:How can I use a SortedList with a RecyclerView to sort different parameters?如何使用带有 RecyclerView 的 SortedList 对不同的参数进行排序?
【发布时间】:2016-01-23 08:39:40
【问题描述】:

我有一个带有rankname 参数的model

用户可以选择按排名或按名称排序,所以我所做的就是在 SortedList 的 compare 方法中放置一个标志,如下所示:

if (sortByRank) {
    return o1.getRank() > o2.getRank() ? LESS_THAN :
        (o1.getRank() == o2.getRank() ? EQUALS : GREATER_THAN);
}

return o1.getName().compareTo(o2.getName());

然后在我的适配器中,我有一个设置排序参数的方法:

public void sortByRank(boolean sort) {
    if (sort) {
        sortByRank = true;
    } else {
        sortByRank = false;
    }

    notifyDataSetChanged();
}

我以为notifyDatasetChanged 会提示compare 方法,但事实并非如此。关于如何一次全部更新的任何想法?

【问题讨论】:

    标签: android list sorting android-appcompat sortedlist


    【解决方案1】:

    SortedList 在您添加任何元素时对元素进行排序。因此,如果您这样编写比较函数,您将按排名或按名称对最后一个元素进行排序。所以整体排序对你来说没有任何意义。

    SortedList 中没有“再次排序”的方法。您更改数据适配器以进行动态排序。

    recyclerView.swapAdapter(newAdapter, false);` 
    

    如果你的适配器中有稳定的 id,你会得到一个漂亮的动画。因为 swapAdapter() 帮助 RecyclerView 重用视图持有者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多