我正在尝试:
mRealm
.where(Contact.class)
.equalTo(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
结果:未达到预期结果。
mRealm
.where(Contact.class)
.contains(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
结果:未达到预期结果。
预期结果:
mRealm
.where(Contact.class)
.like(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
答案 0 :(得分:6)
新答案:
Realm 2.3.0 +:
public RealmQuery<E> like(String fieldName, String value, Case casing)
使用通配符:
指示字段值与指定子字符串匹配的条件
'*'
匹配[0, n]
unicode字符
'?'
匹配单个unicode字符。参数:
fieldName
- 要比较的字段。
value
- 通配符字符串。
casing
- 如何处理套管。将其设置为Case.INSENSITIVE
仅适用于Latin-1字符。返回:查询对象。
抛出:IllegalArgumentException - 如果一个或多个参数与类或字段类型不匹配。
老答案:
mRealm
.where(Contact.class)
.contains(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
这应该可以,但是当完成实际的异步查询时,您将收到对附加的RealmChangeListener的回调。
RealmRecyclerViewAdapter
会自https://github.com/realm/realm-android-adapters自动执行此操作。
答案 1 :(得分:3)
mRealm
.where(Contact.class)
.like(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
答案 2 :(得分:0)
这段代码对我有用。
Realm realm=Realm.getDefaultinstance();
RealmResults<Item> reaaa = realm.where(Item.class).like("name",query,Case.INSENSITIVE).findAll();