【问题标题】:How to search a data from one range to another range in Realm database如何在 Realm 数据库中从一个范围搜索数据到另一个范围
【发布时间】:2017-01-18 12:31:22
【问题描述】:

我在 Realm 数据库中工作。我正在数据库中保存一些数据。说name,age,address,phone number

我正在使用列表视图来查看 UI 中的数据。 我的问题是,如果我保存的名称不按顺序(不是按字母顺序),那么如何按顺序对它们进行排序。

还有一个问题是在对名称进行排序后,我只想在列表视图中查看几个名称(例如,如果我键入的范围是从 C 到 H)C=表示以 C 开头的名称,同样是 H。 谁能帮帮我。

【问题讨论】:

标签: android sorting listview range realm


【解决方案1】:

要按排序顺序获取数据,请像这样使用

RealmResults<DataModel>resultsd =
                realm.where(DataModel.class)
                        .findAllSorted("name");

第二个问题,这样使用

 RealmResults<DataModel>resultsd =
                realm.where(DataModel.class)
                      .contains("name","c").or().contains("name","h").findAll();

【讨论】:

  • or 不需要组吗?
  • 我使用日期作为字符串,所以它只会显示我输入的日期。所以如果我在那个编辑框中使用日期,我想要解决方案。无论我在编辑框中输入什么,我都想从一个范围到另一个范围内获取日期
【解决方案2】:

https://realm.io/docs/java/latest/api/io/realm/RealmQuery.html#lessThan-java.lang.String-java.util.Date-

你使用:lessThan and greaterThan or between()

final RealmResults<Dog> puppies = realm.where(Dog.class).greaterThan("age", 2).lessThan("age", 10).findAll();

据我所知,这也适用于字符串,所以 ifgreaterThan("name", "C") 它将具有带有 C 的名称。

并且对于排序,您可以在添加到 Realm 之前在 arraylist 上使用 Collections.sort(),但是排序然后添加到 DB 将没有效果。因为您在查询 RealmResults 时获得的数据是基于您所做的查询。

对于要排序的查询,您可以:

RealmResults<Dog>results = realm.where(Dog.class).findAllSorted("name");

【讨论】:

  • 我想在搜索视图中使用它。我可以对我发布的这些数据使用两个搜索视图吗?如果是这样,请告诉我如何做到这一点
  • 您可以制作 2 个编辑文本,并将它们用作范围的输入。只有当两个编辑文本都完成时,它才会查询结果。然后尝试: realm.where(Dog.class).greaterThan("name", editText1.getText().toString()).lessThan("name", editText2.getText().toString()).findAll( );
  • 它在搜索视图中很容易使用,但对于两个编辑框对我来说很难。任何人都可以为两个文本框搜索提供一个示例,以在列表视图中查看数据范围,如上所述。请
  • 你在开玩笑吧?我在此之前的评论有一个例子...... :) 我是从头开始写的,它没有经过测试。但它应该工作。 pastebin.com/a9LFvpHt
  • 但是我遇到了 1 个问题。大于和小于是行不通的。只有“.contains”在工作。即使我使用“.contains”,也只会显示我在编辑文本中输入的数据,而不是编辑文本框数据之间的数据。如何解决这个问题
猜你喜欢
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多