所以我有一个RecyclerView
及其适配器。 RecyclerView
的任何更改都保存在活动中,并且适配器仅通知活动RecyclerView
的哪个(以及如何)项目必须更改。
以下是活动中发生的事情的一个例子:
list.remove(position);
adapter.notifyItemRemoved(position);
adapter.notifyItemRangeChanged(position, list.size());
因此,通过调用list.remove(position)
来更新活动的列表数据
还有一个问题。我是否还应该更新适配器的列表数据以及我该如何做?
答案 0 :(得分:1)
首先不应修改您的活动中ArrayList
的项目,因为这会更改您的活动的ArrayList而不是RecyclerView Adapter
。在其构造函数中将ArrayList
传递给RecyclerView Adapter
。 (例如feedItemList
)。
然后,您可以在onItemDismiss()
中使用以下方法定义的方法RecyclerView Adapter
,并将其调用到要删除行的位置。
public void onItemDismiss(int position) {
if(position!=-1 && position<feedItemList.size())
{
feedItemList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, getItemCount());
}
}
@Override
public int getItemCount() {
return (null != feedItemList ? feedItemList.size() : 0);
}