我有一个我传递ArrayList<MovieCategory> list
的RecyclerView,我希望用switch过滤它。类MovieCategory有4个布尔变量isAction,isComedy,isHorror和isThriller。所以电影可以是:isAction = true
如果它只是一部动作片,或者它可以是isAction = true isComedy = true
如果它是一部动作喜剧等。有4个开关代表4个类别,当我翻动动作开关时我希望看到moview在哪里isAction = true
,当切换回来时我希望所有的电影重新出现。我确实解决了这个问题,每次开关被翻转时这个函数被调用
for(Iterator<MovieCategory> it = list.iterator();it.hasNext();){
MovieCategory movieCategory = it.next();
if(!MovieCategory.isAction()){
removed.add(new Backup(movieCategory,movieCategory.indexOf(profileCard)));
it.remove();
}
}
adapter.notifyDataSetChanged();
Whre Backup
class Backup{
MovieCategoty card;
int index;
public Backup(MovieCategoty movieCategory, int index) {
this.movieCategory = movieCategory;
this.index = index;
}
}
当再次关闭开关时,我只需拨打电话
if(removed != null) {
for (Backup b : removed) {
list.add(b.index, b.movieCategory);
}
}
adapter.notifyDataSetChanged();
把一切都放回原处。我有这个问题是我必须为每个开关重复这个过程,这意味着创建4 ArrayList
并且我担心使用太多内存,因为RecyclerView可以容纳10个对象,或者它可以容纳50多个对象,即。它没有限制。那么有更好,更有效的方法吗?