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重用视图持有者