有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不会在单击项目时将文本值设置为AutoCompleteTextView

我的屏幕上有一个AutocompleteTextView。默认情况下,当用户单击autocompletetextview下拉项目的某个项目时,它会将此autocompletetextview的文本设置为所选的项目值

有没有办法禁用此功能?那么,当用户单击下拉项时,是否只触发onItemClickListener

onItemClickListener中将值设置为“”不是一个选项

autoCompleteTextView.setOnItemClickListener { adapterView, view, i, l -> 
    autoCompleteTextView.setText("")
}

因为我需要我的TextWatcher不被触发


共 (1) 个答案

  1. # 1 楼答案

    AutoCompleteTextView使用此类检测下拉菜单上的点击:

    private class DropDownItemClickListener implements AdapterView.OnItemClickListener {
        public void onItemClick(AdapterView parent, View v, int position, long id) {
            performCompletion(v, position, id);
        }
    }
    

    performCompletion()方法中,有一个调用,用于实际更改TextView的内容:

    replaceText(convertSelectionToString(selectedItem));
    

    这个replaceText()方法是protected,这意味着您可以创建AutoCompleteTextView的子类,然后重写它,不做任何事情:

    public class MyAutoCompleteTextView extends AppCompatAutoCompleteTextView {
    
        public MyAutoCompleteTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        protected void replaceText(CharSequence text) {
            // do nothing
        }
    }
    

    现在,只要用<com.example.yourprojecthere.MyAutoCompleteTextView>标记替换<AutoCompleteTextView>标记,就可以了