RecyclerView的Item浅层使用方法
1.notifyItemInserted(int position)
msgList.add(new Msg());
adapter.notifyItemInserted(msgList.size()-1);
只需要对adapter的数据列表进行操作,再使用notifyItemInserted(),即可刷新recyclerview的视图
2.notifyDatasetChanged();
//获得adaptr的数据列表,并操作
newsAdapter.getNewsArrayList().remove(selectedItemNumber);
//刷新视图
newsAdapter.notifyDataSetChanged();
源码解析:
/**
* 通知任何已注册的观察者数据集已更改。
* 有两种不同类别的数据更改事件,项目更改和结构更改。 项目更改是指单个项目的数据已更新但未发生位置更改。 结构变化是指在数据集中插入、删除或移动项目。
* 此事件未指定数据集发生了什么变化,迫使任何观察者假设所有现有项目和结构可能不再有效。 LayoutManagers 将被迫完全重新绑定和重新布局所有可见视图。
* 当使用此方法时, RecyclerView将尝试为报告它们具有stable IDs适配器合成可见的结构更改事件。 这有助于实现动画和视觉对象持久性,但仍需要重新分配和重新布局单个项目视图。
* 如果您正在编写适配器,如果可以的话,使用更具体的更改事件总是更有效。 依靠notifyDataSetChanged()作为最后的手段。
* 也可以看看:
* notifyItemChanged(int) , notifyItemInserted(int) , notifyItemRemoved(int) , notifyItemRangeChanged(int, int) , notifyItemRangeInserted(int, int) , notifyItemRangeRemoved(int, int)
*/
public final void notifyDataSetChanged() {
mObservable.notifyChanged();
}