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 传递,它包含一个类(class)列表,如果类(class)被设置为 active 这是一个 true 或 false 的字符串,并且被解析为 bool 值,那么应该删除该项目。我确定我正确地进行了解析,所以我想知道这里发生了什么?为什么不删除所有的虚假类(class)?
最佳答案
您可能想创建另一个 ArrayList 实例并将您的 search
设置为那个实例,因为您正在同时访问和修改 ArrayList。
其他说明:
请使用 camelCase
作为您的参数名称。因此,不要使用 ListSearch,而是使用 searchList
。
对于您的类变量,尝试在前面添加 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;
}
关于Android Studio 不删除我在 Adapter 中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40140011/