我一直在寻找那个并且找不到合适的答案:
有没有办法从RecyclerView中删除一个Item而不从底层ArrayList中删除它?
我想添加一个功能,以便在某个条件为真时暂时隐藏List中的Items。我以后仍然需要这些项目,但管理2个单独的ArrayList似乎过于复杂。
如果我将适配器内的项目的可见性设置为gone
,则项目的可见间隙可能存在,因此这不是解决方案。
有什么方法可以避免管理2个独立的ArrayLists吗?
答案 0 :(得分:0)
你有一个对象类型的ArrayList 你有一个Object type
的model / pojo类从JsonResponse迭代JsonData时,只需在对象类型Model类中传递boolean值true / false。您要显示的数据使其成为假,否则您可以将' false值设置为true'到你的Model类。
希望这会奏效。
答案 1 :(得分:0)
我认为您必须从数据模型中删除。否则,你要么最后得到空行,如你所说,或者当你滚动时,“隐藏”的回收元素会混乱。
仅仅因为你从Arraylist中删除并不意味着你不能添加另一个列表(暂时)存储被删除的项目。
例如,在适配器
中定义它private List<Item> removed = new ArrayList<>();
public void remove(int position) {
removed.add(items.get(position));
items.remove(position);
notifyDataSetChanged();
}
如果您需要更好的功能来了解已删除的项目,那么Hashmap可能会更好。
答案 2 :(得分:0)
就我而言,我使用的是getApplicationContext()
而不是getContext
或this