我正在尝试使用autoCompleteTextView在安卓系统中实现自动完成,每次击键都会命中服务器。我通过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自动填充?
提前谢谢。
发布于 2018-08-02 17:04:35
我还没有尝试过,但是你可以这样做:
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) {
}
});https://stackoverflow.com/questions/51647672
复制相似问题