0

アプリのリストビュー フィルターに問題があります。KartyListFragment.java で次のように宣言しました。

ListAdapter adapter = new SimpleCursorAdapter(ctx,
    R.layout.karty_list_item, db.getKarty(), from, to, 0);

OnCreate メソッドの StartActivity.java には、EditText と TextWatcher があります。

EditText searchInput = (EditText) findViewById(R.id.search_edit_text);

    watcher = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            KartyListFragment.this.adapter.getFilter().filter(s); //THIS ROW IS WRONG
            //it doesn't know getFilter() 

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) { }

        @Override
        public void afterTextChanged(Editable s) { }
    };

    searchInput.addTextChangedListener(watcher);

OnTextChanged メソッドでは、アダプターの getFilter() メソッドを呼び出す必要がありますが、書き込みエラーが発生します。いくつかのチュートリアルを読みました。使用されている ArrayAdapter があり、List (Cursor) を使用しています。何か考えはありますか?

4

2 に答える 2

0

アダプターを からListAdapterに変更しますCursorAdapter。AListAdapterは「getFilter」メソッドを実装していません。ところで、バックグラウンドでクエリを実行し、リストの実際のフィルタリングを行うには、 QueryFilterProviderを実装する必要があります。

于 2013-02-23T15:43:55.050 に答える
0

ListAdapterに変更SimpleAdapter

これらは私にとってはうまくいきます:)メソッドSimpleAdapterがありますgetFilter

于 2014-10-03T08:54:40.727 に答える