【问题标题】:Case Sensitive filter in Realm领域中的区分大小写的过滤器
【发布时间】:2017-12-10 00:57:05
【问题描述】:

我想要一个我想要在其中执行搜索的项目列表。我希望根据查询以区分大小写的顺序过滤项目。 例如,如果用户搜索牛奶 顺序应该是 牛奶 牛奶 酪 酪 以下是我当前的查询,但由于我添加了 Case.Insesitive 它会根据表中项目的位置给我任何随机顺序。

  mRealm.where(Product.class).contains("productTags.name", tag,Case.INSENSITIVE).findAll();

【问题讨论】:

标签: android realm


【解决方案1】:

你需要使用findAllSorted,比如:

    realm.where(Product.class)
            .contains("productTags.name", tag, Case.INSENSITIVE)
            .findAllSorted("productTags.name", Sort.ASCENDING);

但排序将基于字符串的 ASCII 值,从外观上看,这对您来说还不够。在这种情况下,您需要使用Comparator 自己进行排序

【讨论】:

  • @Christian Melchior,我有一个疑问,我已经在 listtview 中应用了过滤器,它工作正常,我正在通过搜索查询过滤联系人,我可以按号码进行搜索,但我的条件是按姓名和号码搜索联系人,如何按概念进行搜索。这个查询我用来搜索数据 realm.where(RealmPhoneCallLogs.class) .contains("number", text, Case.INSENSITIVE) .findAllSorted("id")
  • @PrabhaKaran 问题是关于ProductproductTags.name,如果您有不同的问题,那么您应该编辑问题。顺便说一句,从 Realm 3.0.0 开始支持链接排序。
  • @Christian Melchoir,您的意思是在使用当前查询获得结果后,我应该再次使用自定义比较器对其进行排序。如果我这样做,这将是用户体验方面的开销,因为产品是数量非常多
  • 是的,但是如果 Realm 没有对您想要的特定排序的内置支持,那是唯一的解决方案。
猜你喜欢
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
相关资源
最近更新 更多