我创建了适配器并创建了过滤器。适配器工作正常,但每当我调用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) {
}
}
}
答案 0 :(得分:2)
尝试在方法publishResults(..)
中使用notifyDataSetChanged()例如:
Android AutoCompleteTextView with Custom Adapter filtering not working
http://jnastase.alner.net/archive/2010/12/19/custom-adapter-for-autocomplete.aspx