RecyclerView Adapter 的数据
RecyclerView Adapter's data
所以我有一个 RecyclerView
及其适配器。 RecyclerView
的任何更改都保存在 activity 中,适配器仅通知 activity RecyclerView
的哪些(以及如何)项必须更改。
这是 activity 中发生的事情的示例:
list.remove(position);
adapter.notifyItemRemoved(position);
adapter.notifyItemRangeChanged(position, list.size());
因此 activity 的列表数据正在通过调用 list.remove(position)
进行更新
还有一个问题。我还应该更新适配器的列表数据吗?我应该怎么做?
首先不应修改 Activity 中 ArrayList
的项目,因为这会更改 Activity 的 ArrayList 而不是 RecyclerView Adapter
。在其构造函数中将 ArrayList
传递给 RecyclerView Adapter
。 (例如 feedItemList
)。
然后您可以在 RecyclerView Adapter
中使用以下方法定义的方法 onItemDismiss()
并在要删除行的位置调用它。
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);
}
所以我有一个 RecyclerView
及其适配器。 RecyclerView
的任何更改都保存在 activity 中,适配器仅通知 activity RecyclerView
的哪些(以及如何)项必须更改。
这是 activity 中发生的事情的示例:
list.remove(position);
adapter.notifyItemRemoved(position);
adapter.notifyItemRangeChanged(position, list.size());
因此 activity 的列表数据正在通过调用 list.remove(position)
进行更新
还有一个问题。我还应该更新适配器的列表数据吗?我应该怎么做?
首先不应修改 Activity 中 ArrayList
的项目,因为这会更改 Activity 的 ArrayList 而不是 RecyclerView Adapter
。在其构造函数中将 ArrayList
传递给 RecyclerView Adapter
。 (例如 feedItemList
)。
然后您可以在 RecyclerView Adapter
中使用以下方法定义的方法 onItemDismiss()
并在要删除行的位置调用它。
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);
}