选择项目后,Android自动完成textview设置自动完成为false

时间:2018-08-02 07:16:43

标签: android autocompletetextview

我正在尝试使用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自动填充吗?

谢谢。

1 个答案:

答案 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) {

        }
    });