[英]Recyclerview: Hiding Items without removing them from the ArrayList
我已经搜索了很长一段时间,但没有找到正确的答案:
有没有办法从 RecyclerView 中删除 Item 而不从底层 ArrayList 中删除它? 我想添加一个功能,当某个条件为真时,暂时隐藏列表中的项目。 稍后我仍然需要这些项目,但管理 2 个单独的 ArrayList 似乎过于复杂。 如果我将 Adapter 内 Item 的 Visibility 设置为gone
,则该项目所在的位置有一个可见的间隙,因此这不是解决方案。
有什么方法可以避免管理 2 个单独的 ArrayLists?
我认为您必须实际从数据模型中删除。 否则,正如您所说,您最终会得到空白行,或者当您滚动时,“隐藏的”回收元素将变得混乱。
仅仅因为您从 Arraylist 中删除并不意味着您不能添加另一个列表来(临时)存储已删除的项目。
例如,在适配器中定义它
private List<Item> removed = new ArrayList<>();
public void remove(int position) {
removed.add(items.get(position));
items.remove(position);
notifyDataSetChanged();
}
如果您需要关于已删除项目的更好功能,Hashmap 可能会更好。
你有一个对象类型的 ArrayList 你有一个对象类型的模型/pojo 类
从 JsonResponse 迭代 JsonData 时,只需在对象类型 Model 类中传递布尔值 true/false。 您要显示的数据使其为真,否则为假,稍后您可以将“假值为真”设置为您的模型类。
希望这会奏效。
就我而言,我使用的是getApplicationContext()
而不是getContext
或this
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.