使用开关过滤RecyclerView中的对象

时间:2018-01-10 15:06:50

标签: android android-recyclerview

我有一个我传递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多个对象,即。它没有限制。那么有更好,更有效的方法吗?

0 个答案:

没有答案