【问题标题】:How do i sort Realm Results list alphabetically in android?如何在 android 中按字母顺序对 Realm Results 列表进行排序?
【发布时间】:2017-01-10 10:47:39
【问题描述】:

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

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)

请仔细阅读我的帖子并建议我一些解决方案。

【问题讨论】:

标签: android realm


【解决方案1】:

使用它来获得SORT_ORDER_ASCENDING或SORT_ORDER_DESCENDING中的排序

public void sort(java.lang.String[] fieldNames, boolean[] sortAscending) 

查看 API 参考 Reference 1 或 Reference 2

【讨论】:

    【解决方案2】:

    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); 
    

    自领域 5.0.0 起更新

    1) 简单且推荐的方式:

    // for sorting ascending, Note that the Sort.ASCENDING value is the default if you don't specify the order
    RealmResults<Contacts> result = realm.where(Contacts.class).sort("name").findAll();
    
    // sort in descending order
    RealmResults<Contacts> result = realm.where(Contacts.class).sort("name", Sort. DESCENDING).findAll();
    

    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 查询、排序和其他有用用法的非常详细的示例。

    【讨论】:

      【解决方案3】:

      从技术上讲,您应该使用以下内容:

      RealmResults<Contacts> result = realm.where(Contacts.class)
                                           .findAllSorted("name", Sort.DESCENDING); 
      

      推荐超过findAll().sort()。

      【讨论】:

      • 我绝对用过这个查询,谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 2014-02-08
      • 2023-04-01
      • 2021-05-27
      • 2015-05-04
      • 1970-01-01
      相关资源
      最近更新 更多