Android AutoCompleteTextView 在输入建议列表时重叠

问题描述

我正在尝试使用 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) {

        }
    });

如何避免这种情况?

enter image description here

解决方法

您不必使用 TextWatcher。每次更改文本时,使用 TextWatcher 都会创建一个新的建议列表。 为此,您必须使用适配器。 这就是它创建这么多建议列表的原因。

您必须创建自定义适配器,因为存在两个条件(@ 和 #)的自定义要求。

这里有一个指向 AutoCompleteTextView 教程的链接供您阅读。我希望你觉得这个有用。

https://www.studytonight.com/android/autocomplete-textview

在上面的教程中参考步骤,但不是 ArrayAdapter 创建一个自定义的。在该适配器内,您可以根据文本获得该列表。