我的屏幕上有一个 AutocompleteTextView。默认情况下,当用户点击 autocompletetextviews 下拉项的一个项目时,它会将这个 autocompletetextview 的文本设置为这个选择的项目值。
有什么办法可以取消吗?那么当用户点击下拉项时,只有 onItemClickListener
被触发?
在 onItemClickListener
中将值设置为“”不是一个选项。
autoCompleteTextView.setOnItemClickListener { adapterView, view, i, l ->
autoCompleteTextView.setText("")
}
因为我需要不触发我的 TextWatcher
最佳答案
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
}
}
现在只需替换您的 <AutoCompleteTextView>
带有 <com.example.yourprojecthere.MyAutoCompleteTextView>
的标签标签,您应该已经准备就绪。
关于java - 不要在项目单击时将文本值设置为 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931916/