如何在android中按字母顺序排序Realm Results列表?

dee*_*ode 5 android realm

我有一个领域列表,我想按字母顺序对列表进行排序.

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);
        }
 });
Run Code Online (Sandbox Code Playgroud)

但是这个逻辑并不是我在下面发布崩溃报告,请通过它.

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)
Run Code Online (Sandbox Code Playgroud)

请通过我的帖子,并建议我一些解决方案.

Max*_*Max 20

排序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); 
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

看看这里你会发现有关Realm查询,排序和其他有用用法的非常详细的例子.

希望能帮助到你