Android 如何使用带RecyclerView的SortedList对不同参数进行排序?

Android 如何使用带RecyclerView的SortedList对不同参数进行排序?,android,list,sorting,android-appcompat,sortedlist,Android,List,Sorting,Android Appcompat,Sortedlist,我有一个模型,带有等级和名称参数 用户可以选择按等级或名称排序,因此我所做的是在SortedList的compare方法中添加一个标志,如下所示: if (sortByRank) { return o1.getRank() > o2.getRank() ? LESS_THAN : (o1.getRank() == o2.getRank() ? EQUALS : GREATER_THAN); } return o1.getName().compareTo(o2.ge

我有一个
模型
,带有
等级
名称
参数

用户可以选择按等级或名称排序,因此我所做的是在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();
}

我以为
notifydatasetchange
会提示
compare
方法,但它不会。关于如何一次更新所有内容,您有什么想法吗?

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

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

recyclerView.swapAdapter(newAdapter, false);` 

如果你的适配器中有稳定的id,你会得到一个很好的动画。因为swapAdapter()有助于RecyclerView重用视图保持架。

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

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

recyclerView.swapAdapter(newAdapter, false);` 
如果你的适配器中有稳定的id,你会得到一个很好的动画。因为swapAdapter()有助于RecyclerView重用视图持有者