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

时间:2015-10-23 17:56:04

标签: android list sorting android-appcompat sortedlist

我有modelrankname个参数。

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

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

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

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

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

    notifyDataSetChanged();
}

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

1 个答案:

答案 0 :(得分:0)

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

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

recyclerView.swapAdapter(newAdapter, false);` 

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