[英]Realm.io - How to use wildcard %LIKE% for a query
我正在嘗試:
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);
新答案:
領域2.3.0+:
public RealmQuery<E> like(String fieldName, String value, Case casing)
使用通配符調整字段值與指定子字符串匹配的條件:
'*'
匹配[0, n]
unicode字符
'?'
匹配單個unicode char。參數:
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執行此操作。
mRealm
.where(Contact.class)
.like(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
這段代碼適合我。
Realm realm=Realm.getDefaultinstance();
RealmResults<Item> reaaa = realm.where(Item.class).like("name",query,Case.INSENSITIVE).findAll();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.