1

EditText と ListView を含む画面があります。EditText に入力すると、AsyncTask が起動され (既存の AsyncTask はすべてキャンセルされて破棄されます)、ListView に表示するデータをローカルでクエリします。EditText にテキストが含まれていない場合、すべてのデータが照会されて表示されます。基本的に、EditText は画面上のデータのフィルターです。これは簡単です。addTextChangedListener では、以前の AsyncTask をキャンセルし、新しいタスクを起動して、それに s.toString() を渡すだけです。

ユーザーがバックスペースを押して EditText 内のテキストを消去すると、デフォルトの動作 (すべてのデータがリストに入力される) が必要になります。これは、addTextChangedListener の現在の実装で動作します。

ただし、EditText の右側にも X ボタンがあります。これは、EditText ( EditText.setText("");) をクリアするためのものです。これは特殊なケースです。この場合、クエリを発生させたくありません。問題は、 addTextChangedListener がこれを知るほど賢くないように見えることです。テキストが変更され、すべてのデータが照会されるため、トリガーされます。

これを防ぐにはどうすればよいですか?

4

1 に答える 1

0

データ メンバーを使用し、必要に応じboolean ignoreNextTextChangeKThxByeて設定/クリアし、ステートメントを使用してクエリを実行しないようにします。booleanif()

于 2012-09-24T19:03:17.977 に答える