为什么在没有notifyDataSetChanged()的情况下更新RecyclerView?

时间:2019-02-22 22:00:30

标签: android android-recyclerview recycler-adapter recyclerview-layout

在对由RecyclerView适配器处理的数组进行突变以更新视图并反映所做的更改时,调用notifyDataSetChanged()notifyItemChanged()是常识。但是,我启动了一个示例应用程序,在同一块中调用.setAdapter()之后立即将项目添加到数组中时,都不会调用任何示例应用程序,并且视图会更新!当我尝试通过按钮的onClickListener或从后台线程添加项目时,都不会发生此行为(都需要notifyDataSetChanged才能更新视图)。

这是怎么回事?

在同一块中调用.setAdapter()之后,是否不应该立即在列表中添加项目?

notifyDataSetChanged()

1 个答案:

答案 0 :(得分:0)

如果要将ArrayList传递到Adapter,并且要在onCreate中添加元素,那将是在应用绘制第一帧之前。

有一段时间,您可以添加元素,因为适配器尚未布置项目。

在您的onClick内,即onCreate完成之后,这意味着adapter已经布置好了。

您可以尝试将add("c");移至onPostCreateonResume,并且可能会看到与onClick类似的结果。