web-dev-qa-db-ja.com

AutoCompleteTextViewは、ユーザーが編集したリストからエントリが選択されたことを検出します

長いリストからアイテムを選択するために使用するAutoCompleteTextViewがあります。ユーザーは、リストから所定の項目のみを選択できる必要があります。彼らは自分のアイテムを入力することができないはずです。

リストからアイテムのみを送信することを確認する方法は、setOnItemClickListenerを使用してブールフラグをトリガーすることです。問題は、ブールフラグがtrueに設定された後でも、アイテムの選択されたテキストを編集できることです。これを検出して、ブールフラグを再度falseに設定する必要があります。どうすればこれを行うことができますか。 onKeyDownを使用する提案を見ましたが、これを実装する方法がわかりません。

16
Rynardt

テキスト変更リスナーを追加できます。

autoCompleteTextView.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});
49
maszter

TextWatcherを実装します。これにより、誰かがテキストを変更したときに常にコールバックを受け取る3つのメソッドが提供されます。文字列が大きくなると、ユーザーはもう一度自分で入力しています。

1