我有一个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) {
}
});
实现一个TextWatcher
,它将提供3个方法,当有人更改文本时,这些方法将不断地得到回调。
如果字符串增长,那么您的用户正在自己输入。
使用
AutoCompleteTextView#setOnItemSelectedListener()
- 运行得非常好。