根据是否选择“收藏夹”选项筛选ListView

时间:2015-04-21 05:45:31

标签: java android listview listadapter

我有一个ListView,带有一个扩展BaseAdapter的自定义适配器。 ListView的源代码是一个带有自定义对象的ArrayList。这些自定义对象具有最喜欢的成员变量。我希望用户能够单击操作栏中的图标并切换列表是显示所有对象,还是仅显示带有"收藏夹"属性设置为true。

我的第一种黑客看似解决方案是创建两个ArrayLists,一个包含所有对象,一个包含所有收藏夹。然后在操作按钮上单击,在两个列表之间切换适配器源列表,如下所示:

protected void toggleList(){
  CustomAdapter adapter;
  if (favoriteSelected){
    adapter=new CustomAdapter(this,favoriteList);
  }else{
    adapter=new CustomAdapter(this,fullList);
  }
  listView.setAdapter(adapter);
}

这似乎可行,但我很难相信没有某种更干净的方法来过滤列表视图的结果。我能找到的唯一信息是基于用户输入的文本进行过滤。

1 个答案:

答案 0 :(得分:0)

怎么样......

class CustomAdapter{
    List<member> mTempMembers;
    List<member> mMembers;

    ...

    showFavorite(boolean isShowFavoriteOnly){

        if(isShowFavoriteOnly){
            mMembers.removeAllExceptFavorite();
        }else{
            mMembers.removeAll(); 
            mMembers.addAll(mTempMembers);
            //mMembers = mTempMembers;
        }
        this.notifyDataSetChanged();

    }

}