RecyclerView适配器的数据

时间:2015-11-21 12:01:59

标签: android android-recyclerview android-adapter

所以我有一个RecyclerView及其适配器。 RecyclerView的任何更改都保存在活动中,并且适配器仅通知活动RecyclerView的哪个(以及如何)项目必须更改。

以下是活动中发生的事情的一个例子:

list.remove(position);
adapter.notifyItemRemoved(position);
adapter.notifyItemRangeChanged(position, list.size());

因此,通过调用list.remove(position)来更新活动的列表数据 还有一个问题。我是否还应该更新适配器的列表数据以及我该如何做?

1 个答案:

答案 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);
}