我在我的片段中创建了我的查询并将其传递给适配器以供以后使用,如下所示:
RealmQuery<Place> query = realm.where(Place.class);
query = query.beginGroup();
if (ids.size() == 0) {
...
} else {
int j = 0;
for (RealmInt id : ids) {
if (j++ > 0) {
query = query.or();
}
query = query.equalTo("id", id.getVal());
}
}
query = query.endGroup();
query = query.equalTo("loc", loc);
在我的适配器中我使用此方法进行过滤:
@Override
public Filter getFilter() {
final Filter filter = new Filter() {
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
String text = constraint.toString();
if (text == null || "".equals(text)) {
if(!query.equals(query2)){
query = query2;
}
OrderedRealmCollection<Place> placess = query.findAll();
updateData(placess);
} else {
if(!query.equals(query2)){
query = query2;
}
OrderedRealmCollection<Place> placess = query
.contains("name", text, Case.INSENSITIVE) // TODO: change field
.findAll();
updateData(placess);
}
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
return results;
}
};
return filter;
}
问题是,当我尝试向后搜索时,这意味着搜索更少的字符,列表不会更新。为什么?