我是初学者,我在理解一段代码时遇到了麻烦.有人可以在这个功能唤起时解释我,它的用途是什么?
这是我的代码:
public void onBindViewHolder(myViewHolder holder, int position) {
RecViewHolder currentdata = data.get(position);
holder.favChecker = currentdata.getFavChecker();
holder.serialID = currentdata.getSerialID();
holder.theClassName = currentdata.getTheClassName();
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ski 142
让我先从一点背景开始(你可能已经理解了,但需要解释onBindViewHolder()
).
RecyclerView
用于显示项目的长列表(或网格).假设您要显示100行内容.一个简单的方法是创建100个视图,每行一个并将所有视图放在一起.但这样做会很浪费,因为大多数都不在屏幕上,因为我们可以说只有10个适合屏幕.
因此,RecyclerView
只创建屏幕上的10个视图.这样,您可以获得10倍的速度和内存使用率.但是当你开始滚动并需要开始显示下一个视图时会发生什么?
同样,一个简单的方法是为您需要显示的每个新行创建一个新视图.但是这种方式到达列表末尾时,您将创建100个视图,并且您的内存使用量将与第一种方法相同.创建视图需要时间,因此您的滚动很可能不会很顺利.
这就是为什么RecyclerView
利用这样一个事实:当您滚动并且新行出现在屏幕上时,旧行也会从屏幕上消失.不是为每个新行创建新视图,而是通过将新数据绑定到旧视图来回收和重用旧视图.
这恰好发生在onBindViewHolder()
.最初,您将获得新的未使用的视图持有者,您必须使用要显示的数据填充它们.但是当你滚动时,你将开始获得用于屏幕上的行的视图持有者,你必须用新数据替换他们持有的旧数据.
它被调用RecyclerView
以在指定位置显示数据.此方法用于更新itemView的内容以反映给定位置的项目.
了解更多信息 RecyclerView.Adapter#onBindViewHolder
归档时间: |
|
查看次数: |
39451 次 |
最近记录: |