我的代码出了什么问题?我在自动填充文本视图中获取整个列表作为建议。
public class ContactAdapter extends ArrayAdapter<String> {
List<ContactList> contactLists;
List<ContactList> suggestions;
LayoutInflater inflater;
public ContactAdapter(Activity context, int id, ArrayList list) {
super(context, id,list);
this.contactLists = list;
suggestions = new ArrayList<>();
inflater = (LayoutInflater.from(context));
}
private View getCustomView(final int position, View view, ViewGroup viewGroup){
view = inflater.inflate(R.layout.custom_contact_layout, null);
TextView name = (TextView)view.findViewById(R.id.textView);
TextView email = (TextView)view.findViewById(R.id.textView2);
name.setText(contactLists.get(position).getName());
email.setText(contactLists.get(position).getEmail());
return view;
}
@Override
public View getView(int position , View view , ViewGroup parent)
{
return getCustomView(position,view,parent);
}
@Override
public Filter getFilter() {
Filter nameFilter = new Filter() {
@Override
public CharSequence convertResultToString(Object result) {
return ((ContactList) result).getName();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
suggestions.clear();
for (int contactName = 0; contactName < contactLists.size(); contactName++) {
if (contactLists.get(contactName).getName().toLowerCase().startsWith(constraint.toString().toLowerCase())) {
suggestions.add(contactLists.get(contactName));
Log.d(">add>", contactLists.get(contactName).getName() + "");
}
}
filterResults.values = suggestions;
filterResults.count = suggestions.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count > 0) {
suggestions.clear();
suggestions = (List<ContactList>) results.values;
notifyDataSetChanged();
} else
notifyDataSetInvalidated();
}
};
return nameFilter;
}
}
告诉我如何才能将过滤后的结果作为建议。在执行过滤方法时,只会添加过滤后的结果。为什么它没有反映在publishResults方法中?
答案 0 :(得分:0)
将您的代码更改为:
Log.d(">>","called");
if(results.count >0){
suggestions.clear();
suggestions = (List<ContactList>) results.values;
notifyDataSetChanged();
}
else
notifyDataSetInvalidated();
}