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