Так я использую AutoCompleteTextView (позже будет меняющимся это к EditText, но одна проблемы в то время), чтобы отфильтровать результаты моей ListView реализации textWatcher:сброс lisview после фильтрации
fqp = new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence constraint) {
String itemName = constraint.toString();
return getSearch(itemName);
}
};
Cursor getSearch(String itemName) {
String searchSelect = "(" + MediaStore.Audio.Media.TITLE + " LIKE ?)";
String[] selectArgs = { "%" + itemName + "%"};
Cursor searchCursor = getContentResolver().query(
queryUri,
projection,
searchSelect,
selectArgs,
MediaStore.Audio.Media.TITLE + " ASC"
);
return searchCursor;
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
String empty = "";
if(s.toString() == empty){
adapter.changeCursor(getAll());
adapter.notifyDataSetChanged();
}else{
adapter.getFilter().filter(s.toString());
adapter.notifyDataSetChanged();
}
}
Этот фильтр работает просто отлично, но мне нужно выяснить способ сброса моего списка, когда мой autoCompleteTextView пуст. Конечно, есть правильный способ сделать это, кроме тестирования, если он пуст, но это то, что я пытался сделать безрезультатно. Также я должен просто создать два курсора: один из которых содержит мой полный список, а другой - отфильтрованный список, поэтому мне не нужно повторно запрашивать контент-провайдера?
's.toString() == empty'. нет. Используйте либо 'equals', либо' TextUtils.isEmpty (s) ' – njzk2