我创建了适配器并创建了过滤器。适配器工作正常,但每次我调用 notifyDataSetChanged 时,AutoCompleteTextView 的下拉列表都会关闭,然后重新打开并提供新建议。
有什么办法可以避免下拉菜单的关闭和重新打开?
编辑
class MyAdapter extends ArrayAdapter<String> {
private static final Filter NO_FILTER = new NoFilter();
private final Handler mHandler = new Handler();
public MyAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
public void updateList(String prefix) {
List<String> list = ...; //from web server;
clear();
foreach (String s : list)
add(s);
notifyDataSetChanged();
}
@Override
public Filter getFilter() {
return NO_FILTER;
}
private static class NoFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
return new FilterResults();
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
}
}
}
最佳答案
尝试在方法 publishResults(..) 中使用 notifyDataSetChanged()
例如:
Android AutoCompleteTextView with Custom Adapter filtering not working
http://jnastase.alner.net/archive/2010/12/19/custom-adapter-for-autocomplete.aspx
关于android - AutoCompleteTextView - 建议在调用 `notifyDataSetChanged` 时自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17123512/