根据是否选择 "Favorite" 选项过滤 ListView
Filter ListView based on if "Favorite" option is selected
我有一个 ListView,带有一个扩展 BaseAdapter 的自定义适配器。 ListView 的源是一个带有自定义 objects 的 ArrayList。这些自定义 objects 有一个最喜欢的成员变量。我希望用户能够单击操作栏中的图标并切换列表是显示所有 objects,还是仅显示 "favorite" 属性 设置为 true 的那些。
我的第一种 hack-y 看似解决方案是创建两个 ArrayList,一个包含所有 objects,一个包含所有收藏夹。然后单击操作按钮,在两个列表之间切换适配器源列表,如下所示:
protected void toggleList(){
CustomAdapter adapter;
if (favoriteSelected){
adapter=new CustomAdapter(this,favoriteList);
}else{
adapter=new CustomAdapter(this,fullList);
}
listView.setAdapter(adapter);
}
这似乎可行,但我很难相信没有某种更简洁的方法来过滤列表视图的结果。我能找到的唯一信息是关于根据用户输入的文本进行过滤。
怎么样...
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();
}
}
我有一个 ListView,带有一个扩展 BaseAdapter 的自定义适配器。 ListView 的源是一个带有自定义 objects 的 ArrayList。这些自定义 objects 有一个最喜欢的成员变量。我希望用户能够单击操作栏中的图标并切换列表是显示所有 objects,还是仅显示 "favorite" 属性 设置为 true 的那些。
我的第一种 hack-y 看似解决方案是创建两个 ArrayList,一个包含所有 objects,一个包含所有收藏夹。然后单击操作按钮,在两个列表之间切换适配器源列表,如下所示:
protected void toggleList(){
CustomAdapter adapter;
if (favoriteSelected){
adapter=new CustomAdapter(this,favoriteList);
}else{
adapter=new CustomAdapter(this,fullList);
}
listView.setAdapter(adapter);
}
这似乎可行,但我很难相信没有某种更简洁的方法来过滤列表视图的结果。我能找到的唯一信息是关于根据用户输入的文本进行过滤。
怎么样...
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();
}
}