我正在使用一个SortedList来过滤RecyclerView中与How to filter a RecyclerView with a SearchView中所述的SearchView中的当前查询相关的数据。
问题是物品的顺序也必须能够改变。SortedList通过具有Adapter方法的Callback类与compare交互。如果用户更改了项目的排序方式,我需要更改它,但我不确定如何才能做到这一点。
目前的情况只需要颠倒顺序,所以这个问题可以用LinearLayoutManagersetReversedLayout(true)来解决,但是我想知道如何提供一种完全不同的方式来对SortedList中的项目进行排序。

最佳答案

SortedListapi不支持列表排序条件的动态更改。它旨在支持一次更改特定项或一批项的排序条件。例如,支持的场景可能是当项目x优先级值增加时,列表按优先级排序。但如果排序条件更改为按日期排序,则不会。
你的案子是最好的解决方式,用setReversedLayout()。另一种(相对干净的)方法是用支持新排序的不同实例SortedList.Callback实例化一个新的sortedlist,添加旧列表中的所有项,指示ViewHolder改用新列表,并在notifyDataSetChanged()上触发Adapter

07-28 02:19
查看更多