我有一个领域列表,我想按字母顺序对列表进行排序。
Collections.sort(contacts, new java.util.Comparator<Contacts>() {
@Override
public int compare(Contacts l1, Contacts l2) {
String s1 = l1.getName();
String s2 = l2.getName();
return s1.compareToIgnoreCase(s2);
}
});
但是这个逻辑并不是我在下面发布崩溃报告,请详细说明。
java.lang.UnsupportedOperationException: Replacing and element is not supported.
at io.realm.RealmResults$RealmResultsListIterator.set(RealmResults.java:826
at io.realm.RealmResults$RealmResultsListIterator.set(RealmResults.java:757)at java.util.Collections.sort(Collections.java:1909)
请仔细阅读我的帖子并向我推荐一些解决方案。
答案 0 :(得分:17)
排序Realm
非常简单。
以下是一个例子:
假设您希望按名称对联系人列表进行排序,您应该在查询结果时对其进行排序,您将得到已经为您排序的结果。
有多种方法可以实现这个目标
示例:强>
1)简单和推荐的方式:
// for sorting ascending
RealmResults<Contacts> result = realm.where(Contacts.class).findAllSorted("name");
// sort in descending order
RealmResults<Contacts> result = realm.where(Contacts.class).findAllSorted("name", Sort.DESCENDING);
2)未分类的结果
如果你得到未排序的结果,你可以用这种方式对它们进行排序。
RealmResults<Contacts> result = realm.where(Contacts.class).findAll();
result = result.sort("name"); // for sorting ascending
// and if you want to sort in descending order
result = result.sort("name", Sort.DESCENDING);
Have a look here您会找到有关Realm
查询,排序和其他有用用法的非常详细的示例。
希望有所帮助
答案 1 :(得分:2)
从技术上讲,您应该使用以下内容:
RealmResults<Contacts> result = realm.where(Contacts.class)
.findAllSorted("name", Sort.DESCENDING);
建议使用findAll().sort()
。
答案 2 :(得分:1)
使用此选项可以在SORT_ORDER_ASCENDING
或SORT_ORDER_DESCENDING
public void sort(java.lang.String[] fieldNames, boolean[] sortAscending)
检查API参考Reference 1或Reference 2