Android 使用开关筛选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,当开关被翻转回来时,我希望所有的电影都能重新

我有一个RecyclerView,我将
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();