何时调用onBindViewHolder及其工作方式?

我是一个初学者,在理解一段代码时遇到了麻烦。有人可以在这个功能启动时给我解释一下,它的作用是什么?

这是我的代码:

    public void onBindViewHolder(myViewHolder holder, int position) {

RecViewHolder currentdata = data.get(position);

holder.favChecker = currentdata.getFavChecker();

holder.serialID = currentdata.getSerialID();

holder.theClassName = currentdata.getTheClassName();

}

回答:

让我从一些背景知识开始(您可能已经了解了,但是需要进行解释onBindViewHolder())。

RecyclerView用于显示项目的长列表(或网格)。假设您要显示100行。一种简单的方法是只创建100个视图,每行一个视图,然后将它们全部布局。但这将是浪费的,因为它们中的大多数将不在屏幕上,因为可以说其中只有10个适合屏幕。

因此,RecyclerView仅创建屏幕上的10个视图。这样,您的速度和内存使用率将提高10倍。但是,当您开始滚动并需要开始显示下一个视图时会发生什么?

同样,一种简单的方法是为您需要显示的每个新行创建一个新视图。但是这样一来,当您到达列表末尾时,您将创建100个视图,并且内存使用情况将与第一种方法相同。创建视图需要花费时间,因此您的滚动很可能不会流畅。

这就是为什么RecyclerView利用以下事实:滚动并在屏幕上显示新行时,旧行也会从屏幕上消失。代替为每个新行创建新视图,而是通过将新数据绑定到旧视图来对其进行

和重用。

这恰好发生在中onBindViewHolder()。最初,您将获得新的未使用的视图持有人,并且必须用要显示的数据填充它们。但是,当您滚动时,将开始获得用于离开屏幕的行的视图持有人,并且您必须用新数据替换它们持有的旧数据。

以上是 何时调用onBindViewHolder及其工作方式? 的全部内容, 来源链接: utcz.com/qa/435894.html

回到顶部