我的布局中有一个AutoCompleteTextView。我还有一种替代方法,可以选择AutoCompleteTextView中存在的相同项。当选择另一种方法时,我通过以下方式填充AutoCompleteTextView中的值:
autoCompleteTextView.setText(valueFromAlternativeSource);其中,valueFromAlternativeSource是有效的自动完成选项之一。这样做的问题是,调用setText时会出现自动完成下拉列表。将以下行放在上面的后面不起作用:
autoCompleteTextView.dismissDropDown(); //Doesn't work. Why?有没有什么想法可以解释为什么关闭dropdown不起作用,或者其他我可以关闭dropdown的方法?
发布于 2014-05-09 23:22:35
如果您想支持API<17,可以子类化AutoCompleteTextview并重写setText(text, filter)方法
@Override
public void setText(CharSequence text, boolean filter) {
if(Build.VERSION.SDK_INT>=17) {
super.setText(text, filter);
}else{
if(filter){
setText(text);
}else{
ListAdapter adapter = getAdapter();
setAdapter(null);
setText(text);
if(adapter instanceof ArrayAdapter)
setAdapter((ArrayAdapter) adapter);
else
setAdapter((CursorAdapter) adapter);
//if you use more types of Adapter you can list them here
}
}
}然后,每当您想手动设置文本时,都可以调用setText(text, false)
发布于 2013-02-27 22:31:58
这对我来说很好,而且不太复杂:
ListAdapter adapter = autoCompleteTextView.getAdapter();
autoCompleteTextView.setAdapter(null);
autoCompleteTextView.setText("whatever");
autoCompleteTextView.setAdapter(adapter);发布于 2012-03-26 21:26:43
看起来这是一个消息处理顺序的问题。我的工作是这样的:
//autoCompleteTextView.dismissDropDown();
new Handler().post(new Runnable() {
public void run() {
autoCompleteTextView.dismissDropDown();
}});https://stackoverflow.com/questions/7458291
复制相似问题