我有一个ListView,带有一个扩展BaseAdapter的自定义适配器。 ListView的来源是一个带有自定义对象的ArrayList。这些自定义对象具有最喜欢的成员变量。我希望用户能够点击操作栏中的图标并切换列表是显示所有对象,还是仅显示“favorite”属性设置为true的对象。根据是否选择“收藏夹”选项来筛选ListView
我的第一种类似hack-y的解决方案是创建两个ArrayLists,其中一个包含所有对象,其中一个包含所有的收藏夹。然后在动作按钮点击,转换适配器源列表两个列表之间是这样的:
protected void toggleList(){
CustomAdapter adapter;
if (favoriteSelected){
adapter=new CustomAdapter(this,favoriteList);
}else{
adapter=new CustomAdapter(this,fullList);
}
listView.setAdapter(adapter);
}
这似乎是它的工作,但我有一个很难相信,没有某种形式的清洁方法过滤列表视图的结果。我所能找到的唯一信息是基于用户输入的文本进行过滤。
肯定,实现自己的Filter类,在YourAdapter.getFilter返回它的实例()方法,(YourAdapter需要实现的可筛选接口) – pskink