Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Recyclerview:隐藏项目而不将其从ArrayList中删除_Java_Android_Arraylist_Android Recyclerview - Fatal编程技术网

Java Recyclerview:隐藏项目而不将其从ArrayList中删除

Java Recyclerview:隐藏项目而不将其从ArrayList中删除,java,android,arraylist,android-recyclerview,Java,Android,Arraylist,Android Recyclerview,我已经搜索了很长一段时间,但没有找到正确的答案: 有没有一种方法可以在不从基础ArrayList中删除项目的情况下从RecyclerView中删除项目? 我想添加一个功能,当某个条件为真时,从列表中临时隐藏项目。我以后还需要这些项目,但是管理两个单独的ArrayList似乎过于复杂。 如果我将适配器内项目的可见性设置为gone,则项目所在的位置存在可见间隙,因此这不是解决方案 有什么方法可以避免管理两个单独的ArrayList吗?您有一个对象类型的ArrayList 您有一个对象类型的model

我已经搜索了很长一段时间,但没有找到正确的答案:

有没有一种方法可以在不从基础ArrayList中删除项目的情况下从RecyclerView中删除项目? 我想添加一个功能,当某个条件为真时,从列表中临时隐藏项目。我以后还需要这些项目,但是管理两个单独的ArrayList似乎过于复杂。 如果我将适配器内项目的可见性设置为
gone
,则项目所在的位置存在可见间隙,因此这不是解决方案


有什么方法可以避免管理两个单独的ArrayList吗?

您有一个对象类型的ArrayList 您有一个对象类型的model/pojo类

当从JsonResponse迭代JsonData时,只需在对象类型模型类中传递布尔值true/false。要显示的数据将其设置为true或false,以后可以将模型类的“false值设置为true”


希望这能起作用。

我认为您必须实际从数据模型中删除。否则,您要么像您所说的那样以空行结束,要么当您滚动时,“隐藏的”回收元素将变得混乱

从Arraylist中删除并不意味着不能(临时)添加另一个列表来存储已删除的项

例如,在适配器中定义它

private List<Item> removed = new ArrayList<>();

public void remove(int position) {
    removed.add(items.get(position));
    items.remove(position);
    notifyDataSetChanged();
}
private List removed=new ArrayList();
公共无效删除(内部位置){
删除。添加(项目。获取(位置));
项目。移除(位置);
notifyDataSetChanged();
}

如果您需要更好的关于已删除哪些项的功能,那么Hashmap可能会更好。

在我的例子中,我使用的是
getApplicationContext()
而不是
getContext

当您将项目可见性设置为
GONE
时,是否可以发布RecyclerView的屏幕截图?请发布您的适配器代码。我想问题是关于隐藏整行,而不是单个视图。执行适配器布局(row\u项目)在从服务器加载数据之前,在活动中映射并在recyclerview/Listview中设置适配器。获取数据后,不要执行“adapter.notifyDataSetChanged”,这样您的listview将为空/隐藏。无论何时,只要显示视图,就执行notifyDataSetChanged。为什么在获取数据后不通知适配器?另外,仍然不确定阻止视图膨胀为行的行或
removed.add(items.remove(position))