问题描述
我正在尝试使用 AutocompleteTextview 来实现 HashTag 和提及。它工作正常。
根据输入的关键字,我在 AutocompleteTextview 中设置适配器。为此,我正在使用 TextWatcher。它正在显示结果。直到这个工作正常。但是当我输入时,建议列表是重叠的。
在图像中,黑色阴影是因为多个页面。当 AutocompleteTextview 中的文本发生变化时,页数会增加。
autoCompleteTextview.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int start,int count,int after) {
}
@Override
public void onTextChanged(CharSequence s,int before,int count) {
if (s.toString().startsWith("@")) {
setupTagUserAutocomplete(data);
}
else if (s.toString().startsWith("#")) {
setupHashAutocomplete(list);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
如何避免这种情况?
解决方法
您不必使用 TextWatcher
。每次更改文本时,使用 TextWatcher
都会创建一个新的建议列表。
为此,您必须使用适配器。
这就是它创建这么多建议列表的原因。
您必须创建自定义适配器,因为存在两个条件(@ 和 #)的自定义要求。
这里有一个指向 AutoCompleteTextView
教程的链接供您阅读。我希望你觉得这个有用。
https://www.studytonight.com/android/autocomplete-textview
在上面的教程中参考步骤,但不是 ArrayAdapter
创建一个自定义的。在该适配器内,您可以根据文本获得该列表。