adapter = new ArrayAdapter<String(getApplicationContext(),android.R.layout.simple_list_item_multiple_choice,contactList);
setListAdapter(adapter);
我的ListActivity顶部有一个EditText,用于过滤联系人列表。但是当我使用下面的代码进行过滤时。
search.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
adapter.getFilter().filter(arg0);
}
}
只有与每个项目关联的字符串值被过滤掉,但与之关联的复选框保持不变。
实施例。假设我有3个联系人“A”,“B”和“C”。当我打开这个ListActivity并选择“A”时。现在,当我搜索联系人“C”时(通过在搜索框中输入“C”),联系人将过滤掉,我可以在顶部看到联系人“C”。但是,它表明它已被选中。实际上,它不是......因为与“C”相关联的复选框从未被缩短......并且当前复选框似乎与“C”相关联是“A”。
如何才能使过滤同步?
微。PNG
答案 0 :(得分:0)
我也受到了这个问题的影响,通过使用我自己的自定义适配器扩展ArrayAdapter
并覆盖getView
来解决它,我根据未经过滤的列表将每个视图设置为选中/取消选中
这是我的getView代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CheckBox view = (CheckBox) super.getView(position, convertView, parent);
MyObject object = getItem(position);
view.setChecked(object.selected);
view.setOnClickListener(MyClass.this);
return view;
}
我还有MyClass实现onClickListener
,切换所点击的MyObject的选定状态并调用myAdapter.notifyDataSetChanged();