更新RecyclerView适配器项而不调用OnCreateViewHolder

时间:2016-05-10 16:25:43

标签: java android android-recyclerview adapter

如何在不调用OnCreateViewHolder(...)的情况下更新ReyclerView适配器?

因为当我做的时候

mRecyclerView.getAdapter().notifiItemChanged(position)

它进入OnCreateViewHolder(...)我不想要的内容。我不想要的原因是因为我已经扩展了项目视图,onCreateViewHolder(...)将重新填充它以便折叠。我只想OnBindViewHolder(...)被称为

有人面对吗?

UPD: 刚刚发现OnCreateViewHolder(...)只是第一次被调用,在接下来的所有时间都没有被调用。是什么原因? 吨

2 个答案:

答案 0 :(得分:0)

这是RecyclerView的全部内容:它处理一个视图持有者池,创建一次(调用OnCreateViewHolder())然后重新使用(或回收,因此视图名称)尽可能多通过OnBindViewHolder()

OnCreateViewHolder()用于创建视图,而OnBindViewHolder(重新)设置视图状态(如文本内容,选定状态,...)

因此,与项目关联的任何状态(如展开/折叠状态)都不应存储在ViewHolder中。例如,您可以在适配器中使用私有列表。

答案 1 :(得分:0)

您可以向数据集中的数据对象添加onBindViewHolder,然后在isExpanded方法中检查true是否为boolean,如果是,则以编程方式展开视图。 (并且当展开/折叠视图时,不要忘记切换DoCmd.OpenQuery