我正在尝试使用autoCompleteTextView
在android中实现自动完成功能,其中每次击键都会击中服务器。我正在通过textChangedListener
来实现此目标,如下所示:
autoCompleteTextView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().trim().length() > 0) {
Log.d("Going to hit", "SERVER with str" + s.toString());
fetchData(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
问题是在获取数据并选择一个项目时,尽管我将自动完成文本设置为null,但默认情况下,所选的字符串正在autoCompleteTextView
中打印。结果,textChangedListener
被再次调用以获取新数据,这是多余的。
从自动完成下拉菜单中选择一项后,有什么方法可以阻止autocompleteTextView
自动填充吗?
谢谢。
答案 0 :(得分:0)
还没有尝试过,但是您可以执行以下操作:
boolean isSelected;
autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
isSelected = true;
}
});
在您的addTextChangedListener
autoCompleteTextView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().trim().length() > 0) {
Log.d("Going to hit", "SERVER with str" + s.toString());
if (isSelected) {
isSelected = false;
} else {
fetchData(s.toString());
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});