Java 在搜索期间过滤列表会修改原始数据源
我刚刚在我的视图中添加了一个Java 在搜索期间过滤列表会修改原始数据源,java,android,arraylist,android-recyclerview,searchview,Java,Android,Arraylist,Android Recyclerview,Searchview,我刚刚在我的视图中添加了一个SearchView,其中包含一个RecyclerView。它工作得很好,但每次我设置过滤器时,它都会根据前一个过滤器进行过滤。此外,当我关闭搜索字段时,完整的数据列表不会重新出现 这是我在适配器中的配置(我没有列出onBindViewHolder或onCreateViewHolder,但它们都在那里): 这就是DataManager类中的内容: static ArrayList<Attraction> attractionArrayList = new
SearchView
,其中包含一个RecyclerView
。它工作得很好,但每次我设置过滤器时,它都会根据前一个过滤器进行过滤。此外,当我关闭搜索字段时,完整的数据列表不会重新出现
这是我在适配器中的配置(我没有列出onBindViewHolder
或onCreateViewHolder
,但它们都在那里):
这就是DataManager
类中的内容:
static ArrayList<Attraction> attractionArrayList = new ArrayList<Attraction>();
static ArrayList attractionArrayList=new ArrayList();
我还有一个函数,在从数据库加载所有吸引人的内容后,我将它们添加到attractionArrayList
问题似乎出在方法setFilter
上,因为我发现它正在修改DataManager.attractionsArrayList
有人知道它为什么这样做,以及我如何保持完整列表的完整性,同时过滤该列表的副本(就像我尝试过的那样)?您正在这样做:
public void setFilter(List<Attraction> attractions) {
attractionsList.clear();
attractionsList.addAll(attractions);
}
public void setFilter(List您正在执行以下操作:
public void setFilter(List<Attraction> attractions) {
attractionsList.clear();
attractionsList.addAll(attractions);
}
publicsvoidsetfilter(List即使在RecyclerView
活动中创建另一个ArrayList
也不能解决这个问题。我仍然不太明白为什么要更改DataManger
中的列表。我以为Java中的参数总是按值传递的?即使在RecyclerView
活动中创建另一个ArrayList
Victity并不能解决这个问题。我仍然不太明白为什么要更改DataManger
中的列表。我以为在Java中参数总是按值传递的?
public void setFilter(List<Attraction> attractions) {
attractionsList.clear();
attractionsList.addAll(attractions);
}