我在数据库中有一个电话号码和消息对的列表。我想在按选项菜单中的相应按钮后按电话号码或消息文本以相反的顺序对列表进行排序。我用 实现Collections.sort并compare更新了适配器notifyDataSetChanged()。然而,当我按下按钮时,什么也没有发生。作为测试,我尝试notifyDataSetChanged()在 的末尾调用排序方法 和onViewCreated(),但也没有排序。为什么没有Collections.sort对我的列表进行排序?
2 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
难道是因为里面的代码onLoadFinished
吗?我不喜欢加载器,但是您为回收器视图设置了一个适配器,传递局部变量list
。这意味着调用此代码后,您的适配器不再绑定mLogList
。
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
对于按字典顺序反向排序 LogEntryItem 消息:
class SortbyMessage implements Comparator<LogEntryItem> { @Override public int compare(LogEntryItem a, LogEntryItem b) { return a.getMessageSent().compareTo(b.getMessageSent()); } }
现在你可以像这样使用它
Comparator comparator = Collections.reverseOrder(new SortbyMessage()); Collections.sort(ar, comparator);
对于数字排序与上面类似,除了
return a.getPhoneNumber() - b.getPhoneNumber();
或者在您的reverseSortComparePhoneNumber方法中将您的返回更改为
itemB.getPhoneNumber() - itemA.getPhoneNumber();
添加回答
举报
0/150
提交
取消