Android 使用开关筛选RecyclerView中的对象
我有一个RecyclerView,我将Android 使用开关筛选RecyclerView中的对象,android,android-recyclerview,Android,Android Recyclerview,我有一个RecyclerView,我将ArrayList传递给它,我想用一个开关对它进行过滤。类MovieCategory有4个布尔变量isAction、isComedy、isHorror和isThriller。因此,一部电影可以是:isAction=true如果它只是一部动作片,也可以是isAction=true isComedy=true如果它是一部动作喜剧等。有4个开关代表4个类别,当我翻转动作开关时,我想看电影,其中isAction=true,当开关被翻转回来时,我希望所有的电影都能重新
ArrayList
传递给它,我想用一个开关对它进行过滤。类MovieCategory有4个布尔变量isAction、isComedy、isHorror和isThriller。因此,一部电影可以是:isAction=true
如果它只是一部动作片,也可以是isAction=true isComedy=true
如果它是一部动作喜剧等。有4个开关代表4个类别,当我翻转动作开关时,我想看电影,其中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();
当开关再次关闭时,我会打个简单的电话
if(removed != null) {
for (Backup b : removed) {
list.add(b.index, b.movieCategory);
}
}
adapter.notifyDataSetChanged();
把一切都放回原处。我遇到的问题是,我必须对每个开关重复这个过程,这意味着创建4个
ArrayList
,我担心使用太多内存,因为RecyclerView可以容纳10个对象,或者它可以容纳50多个对象,也就是说,它不受限制。那么,有没有更好、更有效的方法 是否考虑过使用DiffUtil?
if(removed != null) {
for (Backup b : removed) {
list.add(b.index, b.movieCategory);
}
}
adapter.notifyDataSetChanged();