假设我们有一个包含100行的RecyclerView。每行包含一个Spinner,其值为1-5(默认值为1)。
我向下滚动到项目行#100,将其值更改为5,然后向上滚动到第1行,我的问题是:
当我再次向下滚动到第100行时,我会看到之前选择的值为5的Spinner吗?或者默认值为1,因为RecyclerView将回收项目以供重复使用(性能提升),而不是将所有100行保留在内存中。
很想得到关于它是如何工作的一个很好的解释。
答案 0 :(得分:1)
就像你说的那样,RecyclerView
将不会在内存中保留100行,因此名称 Recycler 查看。 RecyclerView
将保留多少相同布局的视图取决于它们在屏幕上的适合度。
当您将项目#100的值更改为5时,您正在更改其中一个回收的视图。现在,在您修改ViewHolder
之前(通常在onBindViewHolder()
中完成),视图将保持不变,这意味着特定的ViewHolder
仍然会有5 Spinner
值;在列表中的任何位置,不一定如果向下滚动到#100的项目,您将看到一个Spinner
值为5的项目。