所以我有一个习惯ArrayAdapter
所以我可以使用标题/副标题视图ListView
。我有一个EditText
它接受一个字符串并过滤适配器。
过滤器的工作原理是过滤正确的对象(我可以通过单击它来判断,它以正确的“附加”开始意图。)
但是,即使过滤有效,适配器中的项目也不会更新以显示正确的信息...标题和副标题不正确。
假设我们有 0 到 9 项ListView
,我通过搜索过滤到 3 个项目,假设过滤后的项目是 5、6、9... 显示 3 个项目,但它是原始预搜索的前 3 个项目ListView
(0-2)。如果我点击项目 2(第三个项目),则 9 的内容将包含在新意图中。这对于搜索条件来说是正确的,但标题确实反映了正确的信息。
我不确定我需要告诉他们什么ListView
刷新。
我不认为它notifyDataSetChanged();
任何帮助表示赞赏。
谢谢!
public class myListAdapter extends ArrayAdapter<Pizza>{
private ArrayList<Pizza> items;
private PizzaViewHolder myListHolder;
private class PizzaViewHolder{
TextView title;
TextView subtitle;
}
public myListAdapter(Context context, int textViewResourceId, ArrayList<Pizza> items) {
super(context, textViewResourceId, items);
this.items = items;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.myList_item, null);
myListHolder = new PizzaViewHolder();
myListHolder.title = (TextView)v.findViewById(R.id.title);
myListHolder.subtitle = (TextView)v.findViewById(R.id.subtitle);
v.setTag(myListHolder);
}else myListHolder = (PizzaViewHolder)v.getTag();
Pizza myList = items.get(pos);
if (myList != null){
myListHolder.title.setText(myList.getTitle());
myListHolder.subtitle.setText(myList.getSubTitle());
}
return v;
}
}
这是搜索
private TextWatcher filterTextWatcher = new TextWatcher(){
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!s.equals("")){
((Filterable) this.listView1.getAdapter()).getFilter().filter(s);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
};