ここのように、Android ListView に単純な検索フィルターを追加したい:
Search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
MainActivity.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
このコードは、インターネットで見つかったチュートリアルからのものです (URL を紛失しました)。これは ArrayAdapter に基づいていますが、私のクラスでは SimpleCursorAdapter を使用しており、このコードは機能しません。つまり、入力はできますが、検索結果はフィルタリングされません。これが私のコードです:
// Create the pointer to the desired data
dataAdapter = new SimpleCursorAdapter(
this, R.layout.contact_row, contactsCursor, columns, to, 0);
ListView listView = (ListView) findViewById(R.id.list);
Search = (EditText) findViewById(R.id.inputSearch);
Search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
ContactListActivity.this.dataAdapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
SimpleCursorAdapter でこのフィルター関数を設定する方法はありますか?