Android工作室没有在Adapter中删除我的项目?

时间:2016-10-19 19:30:10

标签: android arrays android-recyclerview adapter

 public void setSearch(ArrayList<Search> ListSearch){
    search=ListSearch;
    removeInActiveClasses(search);
    notifyItemRangeChanged(0,search.size());
}


public void removeInActiveClasses(ArrayList<Search> data){
    for(int i=0;i<data.size();i++){
        boolean isActive=Boolean.parseBoolean(data.get(i).getActive());
        System.out.println("The course at Not Removed "+search.get(i).getName()+" is set to "+search.get(i).getActive());
        if(!isActive){
            System.out.println("The course at Removed"+search.get(i).getName()+" is set to "+search.get(i).getActive());
            search.remove(i);
        }
    }
}

列表作为listSearch传递,它包含一个课程列表,如果课程设置为active是一个字符串,无论是true还是false,并解析为boolean,那么该项应该被删除。我确定我正确解析了所以我想知道这里发生了什么?为什么不删除所有的错误课程?

1 个答案:

答案 0 :(得分:2)

您可能想创建另一个ArrayList实例并将search设置为该实例,因为您正在同时访问和修改ArrayList。

其他说明:

请使用camelCase作为参数名称。因此,使用searchList而不是ListSearch。

对于您的类变量,请尝试在前面添加m,这样您就不会感到困惑。因此,请使用search

而不是mSearchList

最后,您要在一个方法中混合一些变量。尝试统一它们以便更好地进行维护。

这是完整的代码。

public void setSearchList(ArrayList<Search> searchList) {
    mSearchList = removeInactiveClasses(searchList);
    notifyDataSetChanged();
}


private ArrayList<Search> removeInactiveClasses(ArrayList<Search> data) {
    ArrayList<Search> list = new ArrayList<>();
    for (int i = 0; i < data.size(); i++){
        boolean isActive = Boolean.parseBoolean(data.get(i).getActive());

        if (isActive){
            list.add(data.get(i));
        }
    }

    return list;
}