RecyclerView.ViewHolder Overview

It’s hard for me to understand the work of the viewing owner, here is my question, which can increase my understanding of the viewer:

The oncreateViewHolder is said to return a viewer. What is an object-owner of an object, does it contain all the views on one line? if there is a list of 1000 elements, how many viewobjects will be created?

My understanding: If we create a viewholder, it contains a link to the view, for example findviewbyid, since findviewbyid is an expansive operation, so we can create an object with one object and reuse by simply setting the image or text (happens on onBindView).

But onCreateViewHolder is launched several times, and as a result, findviewbyid also executes several times, is there a performance problem?

As well as its difference from the convertView of the base adapter of a simple list

Thank!

+4
source share
4 answers

They say that oncreateViewHolder returns object-object-object, that the viewholder object contains all the views on one line? if there is a list of 1000 elements, how many viewobjects will be created?

ViewHolder . ViewHolder , onCreateViewHolder. . 100 , ony 10 , onCreateViewHolder 10 , 10 ViewHolders. ( RecyclerView, , , )

: -, , findviewbyid, findviewbyid , , ( onBindView).

RecyclerView ViewHolders. ViewHolder ( View), , .

onCreateViewHolder findviewbyid , ?

, , , - . , . . , ViewHolder.

convertView ListView

ListView , . , convertView. RecyclerView .

+3

, 1000 , 10 . 10 ViewHolder, . , ViewHolder, , . , CPU.

+2

- , id. .

, 1k , 5 , id, 5 .

, recyclerView 7 (5 + ). , recyclerView , viewHolders. : " Recycler View"

, findViewById 7 * 5 = 35 . viewHolder, 5 * 1000 = 5000 .

35 5000, , .

+2

RecyclerView.ViewHolder - , . viewType ViewHolder.

ViewType, .

getItemViewType(int position) - . getItemViewType , viewType, ViewHolder onCreateViewHolder.

onBindViewHolder - .

:

: , ViewHolder , , viewType. , getItemViewType(int position), , ViewHolder .

+2

Source: https://habr.com/ru/post/1683106/


All Articles