如何在Realm数据库中搜索从一个范围到另一个范围的数据

时间:2017-01-18 12:31:23

标签: android sorting listview range realm

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

对于第二个问题,请像这样使用

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

答案 1 :(得分:1)

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

您使用:lessThan和greaterThan或介于()

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

据我所知,这也适用于字符串,所以如果更大(“名称”,“C”),它将具有C的名称。

对于排序,您可以在添加到Realm之前在arraylist上使用Collections.sort(),但排序然后添加到DB将不起作用。导致查询RealmResults时获得的数据基于您所做的查询。

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

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