16

我有一个AutoCompleteTextView我用来从长列表中选择一个项目。用户应该只能从列表中选择一个预定的项目。他们不应该能够输入自己的项目。

我检查以确保他们仅提交列表中的一个项目的方式是用于setOnItemClickListener触发布尔标志。问题是布尔标志设置为 true 后,他们仍然可以编辑项目的选定文本。我需要检测到这一点并将布尔标志再次设置为 false。我该怎么做呢。我看到了一个使用的建议onKeyDown,但我不确定如何实现它。

4

3 回答 3

52

您可以添加文本更改侦听器:

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) {

    }
});
于 2013-03-12T08:22:09.267 回答
1

实现 a TextWatcher,它将为您提供 3 种方法,当有人更改文本时,这些方法将不断得到回调。如果字符串增长,您的用户将再次自己键入。

于 2013-03-12T08:18:19.577 回答
-1

采用

AutoCompleteTextView#setOnItemSelectedListener() 

- 奇迹般有效。

于 2017-02-06T21:53:44.383 回答