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) {
}
}
现在,只需将您的
<AutoCompleteTextView>
标签替换为
<com.example.yourprojecthere.MyAutoCompleteTextView>
标签,就可以完成设置了。
TextWatcher
- 你所要做的就是在你传递给AutoCompleteTextView
的Filterable
适配器中实现一个Filter
- 可以参考这里了解如何间接地实现它(而不是从头开始实现Filter
)。 - pskink