我有一个AutoCompleteTextView
我用来从长列表中选择一个项目。用户应该只能从列表中选择一个预定的项目。他们不应该能够输入自己的项目。
我检查以确保他们仅提交列表中的一个项目的方式是用于setOnItemClickListener
触发布尔标志。问题是布尔标志设置为 true 后,他们仍然可以编辑项目的选定文本。我需要检测到这一点并将布尔标志再次设置为 false。我该怎么做呢。我看到了一个使用的建议onKeyDown
,但我不确定如何实现它。
我有一个AutoCompleteTextView
我用来从长列表中选择一个项目。用户应该只能从列表中选择一个预定的项目。他们不应该能够输入自己的项目。
我检查以确保他们仅提交列表中的一个项目的方式是用于setOnItemClickListener
触发布尔标志。问题是布尔标志设置为 true 后,他们仍然可以编辑项目的选定文本。我需要检测到这一点并将布尔标志再次设置为 false。我该怎么做呢。我看到了一个使用的建议onKeyDown
,但我不确定如何实现它。
您可以添加文本更改侦听器:
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) {
}
});
实现 a TextWatcher
,它将为您提供 3 种方法,当有人更改文本时,这些方法将不断得到回调。如果字符串增长,您的用户将再次自己键入。
采用
AutoCompleteTextView#setOnItemSelectedListener()
- 奇迹般有效。