如何在不调用OnCreateViewHolder(...)的情况下更新ReyclerView适配器?
因为当我做的时候
mRecyclerView.getAdapter().notifiItemChanged(position)
它进入OnCreateViewHolder(...)
我不想要的内容。我不想要的原因是因为我已经扩展了项目视图,onCreateViewHolder(...)
将重新填充它以便折叠。我只想OnBindViewHolder(...)
被称为
有人面对吗?
UPD:
刚刚发现OnCreateViewHolder(...)
只是第一次被调用,在接下来的所有时间都没有被调用。是什么原因?
吨
答案 0 :(得分:0)
这是RecyclerView
的全部内容:它处理一个视图持有者池,创建一次(调用OnCreateViewHolder()
)然后重新使用(或回收,因此视图名称)尽可能多通过OnBindViewHolder()
。
OnCreateViewHolder()
用于创建视图,而OnBindViewHolder
(重新)设置视图状态(如文本内容,选定状态,...)
因此,与项目关联的任何状态(如展开/折叠状态)都不应存储在ViewHolder
中。例如,您可以在适配器中使用私有列表。
答案 1 :(得分:0)
您可以向数据集中的数据对象添加onBindViewHolder
,然后在isExpanded
方法中检查true
是否为boolean
,如果是,则以编程方式展开视图。 (并且当展开/折叠视图时,不要忘记切换DoCmd.OpenQuery
)