У меня проблема с фильтром в моем списке.
На самом деле это работает довольно хорошо с IndexAdapter, но не с SimpleCursorAdapter.
В следующем примере, если isCursor == false, фильтр работает довольно хорошо
но если это == true, фильтр не работает!
Кстати, адаптер работает довольно хорошо.
if(isCursor){
mCursorAdapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, stationsCursor, columns, to);
FilterTextWatcherCursor filterTextWatcher = new FilterTextWatcherCursor(mCursorAdapter);
filterText.addTextChangedListener(filterTextWatcher);
this.setListAdapter(mCursorAdapter);
}
else{
mIndexAdapter = new MyIndexAdapter<String>(getApplicationContext(),
R.layout.row_station_picker, elements);
FilterTextWatcher filterTextWatcher = new FilterTextWatcher(mIndexAdapter);
filterText.addTextChangedListener(filterTextWatcher);
this.setListAdapter(mIndexAdapter);
}
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setFastScrollEnabled(true);
Я действительно не понимаю, где может возникнуть проблема.
Для информации, мой FilterTextWatcher:
public class FilterTextWatcherCursor implements TextWatcher {
private SimpleCursorAdapter adapter;
public FilterTextWatcherCursor(SimpleCursorAdapter adapter) {
this.adapter = adapter;
}
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(s);
}
}
FilterTextWatcher точно такой же, но я заменил SimpleCursorAdapter на IndexAdapter
Большое спасибо за любую помощь ...