0
RealmDB
을 내 Android Local Storage
으로 사용하고 있습니다. 하지만 필터링이 제대로 작동하지 않습니다. 예 : google
을 쿼리하면 DB
에 GOOGLE
이 표시되면 표시되지 않습니다. 만약 내가 같은 것을 쿼리하면 Google
이 나왔습니다. 이름을 잘 입력하지 않으면. 필자의 결과를 필터링하여 필터링하려고했습니다. 모두 소용 없다. 나는 을 내 AutoCompleteTextView
에서 사용하도록 확장합니다.영역 안드로이드 DB 필터링
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
return null;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults filterResults) {
if (constraint != null) {
//String query = constraint.toString().toLowerCase();
mResult = filterStates(constraint.toString());
Log.e(TAG, "" + mResult.size());
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
}
@NonNull
private List<RealmOutlet> filterStates(String query) {
Realm mRealm = RealmUtils.getRealmInstance(mContext);
return mRealm.where(RealmOutlet.class)
/*.equalTo("channel", "distributor")
.equalTo("isSent", true)*/
.beginGroup()
.equalTo("name", query)
.or()
.contains("name", query)
.or()
.beginsWith("name", query)
.endGroup()
.findAll();
}
작동하지 않습니다. 내 DB에있는 모든 이름이 모두 대문자임을 알았습니다. 그래서'GOOGLE'을 검색하고 싶다면'구글'은 작동하지 않을 것이고'구글'만이 작동하지 않을 것이다'GO'는 당신에게 제안을 보여줄 것입니다. 내가 여기에서 볼 수있는 유일한 해결책은 어쨌든 데이터로 toLowerCase()를 할 수 있다면 –
입니다. 그래서 Case.INSENSITIVE를 지정해야합니다. – EpicPandaForce
정확히. 나는 그것을 추가했다. 그리고 같은 것 –