3

ListViewリアルタイムでフィルタリングしたい。に がありEditTextActionBarユーザーが文字を書くたびにListView、情報のフィルタリングのカーソルを更新したいと考えています。

クエリをAsyncTask実行しましたが、2 つの質問があります。

1º) ユーザーが 3 つの文字を入力した場合、3 つ作成AsyncTasksします (最初の文字を検索するために 1 つ、最初の 2 つの文字を検索するために 1 つ、最後に 3 つの文字を検索するために 1 つ)。AsyncTask以前のタスクを新しいタスクに置き換えるように言う簡単な方法はありますか?

2º) を開始するのを少し遅らせるにはどうすればよいAsyncTaskですか? そのため、ユーザーが途切れることなく 3 文字入力するとAsyncTask、最後まで を作成しません。

ありがとう!

4

1 に答える 1

5

うーん...なぜAsyncTaskリアルタイムで検索に使用するのか完全にはわかりません。これが私が(そして成功した)方法です。

TextChangeListenerに aを追加Edittext:

editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            searchResults = myDbHelper.searchAll(s.toString());
            searchAdapter.notifyDataSetChanged();
        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

ユーザーがキーを押すたびに、sqlite データベースを検索しています。MysearchResultsは に入力するために使用されるListViewため、検索結果の取得を設定した後、データ セットが変更されたことをリスト アダプターに伝えます。

お役に立てれば。

于 2012-08-23T19:57:34.527 に答える