У меня есть фильтр адаптеров listview, который правильно фильтрует мой введенный текст с использованием аналогичного оператора.Невозможно отобразить данные списка после фильтра
Проблема, с которой я сталкиваюсь, заключается в том, что когда приложение загружается, все данные отображаются в списке. Когда фильтр применяется, он правильно фильтрует текст supplid, то, что я не могу сделать, так это, чтобы после того, как edittext снова пуст (т.е. строка поиска удалена), все данные перерисовываются в списке.
Следующие скриншоты отображения вопрос:
Загруженный список:
Фильтр текста 'а'. Apple, отображается как ожидалось:
Проблема: Когда 'а' удаляется, ListView не перезагружается.
Код для фильтра: метод
itemNameEdit = (EditText) findViewById(R.id.inputName);
showItems.setTextFilterEnabled(true);
itemNameEdit.addTextChangedListener(new TextWatcher()
{
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
cursorAdapter.getFilter().filter(s.toString());
}
});
getCons = new DBHandlerShop (this, null, null);
cursorAdapter.setFilterQueryProvider(new FilterQueryProvider()
{
public Cursor runQuery(CharSequence constraint)
{
getCons.open();
return getCons.getChanges(constraint.toString());
}
});
showItems.setAdapter(cursorAdapter);
GetChanges:
public Cursor getChanges(String constraintPassed) {
String [] columns = new String[]{KEY_ROWSHOPID, KEY_ITEMSHOP, KEY_ITEMNUM, KEY_ITEMPRICE};
Cursor c = null;
if(constraintPassed == "" || constraintPassed.length() == 0)
{
c = ourDatabase.query(DATABASE_TABLESHOP, columns, null, null, null, KEY_ITEMSHOP + " ASC", null);
}
else
{
c = ourDatabase.query(DATABASE_TABLESHOP, columns, KEY_ITEMSHOP + " LIKE'" + constraintPassed + "%'", null, null, null, KEY_ITEMSHOP + " ASC", null);
}
if(c != null)
{
c.moveToFirst();
//return c;
}
return c;
}
добавить cursorAdapter.notifyDataSetChanged() в на textchange методе, чтобы обновить ListView – Raghunandan
Вы, вероятно, не обновляете свой список, когда edittext пуст – Raghunandan
@Raghunandan Я добавил DataSetChanged по методу textChanged и имел ту же проблему, что и доцент обновления – user1352057