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 개의 뷰를 만들고 모두 배치하는 것입니다. 하지만 대부분은 화면 밖에 있기 때문에 낭비가 될 것입니다.
따라서 RecyclerView
대신 화면에있는 10 개의 뷰만 생성합니다. 이렇게하면 속도와 메모리 사용량이 10 배 향상됩니다. 하지만 스크롤을 시작하고 다음보기를 표시해야 할 때 어떤 일이 발생합니까?
다시 한 번 간단한 방법은 표시해야하는 새 행마다 새보기를 만드는 것입니다. 그러나 이렇게하면 목록 끝에 도달 할 때까지 100 개의 뷰가 생성되고 메모리 사용량은 첫 번째 접근 방식과 동일합니다. 뷰를 만드는 데 시간이 걸리므로 스크롤이 원활하지 않을 수 있습니다.
이것이 RecyclerView
스크롤 할 때 새 행이 화면에 표시되면 이전 행도 화면에서 사라진다는 사실을 활용하는 이유입니다. 각각의 새 행에 대해 새보기를 만드는 대신 새 데이터를 바인딩 하여 이전보기를 재활용 하고 다시 사용합니다.
이것은 정확히 onBindViewHolder()
. 처음에는 사용하지 않은 새 뷰 홀더를 얻고 표시하려는 데이터로 채워야합니다. 그러나 스크롤 할 때 화면에서 벗어난 행에 사용 된 뷰 홀더를 가져 오기 시작하고 그들이 보유한 이전 데이터를 새 데이터로 대체해야합니다.
RecyclerView
지정된 위치에 데이터를 표시하기 위해에서 호출됩니다 . 이 메서드는 주어진 위치에서 항목을 반영하도록 itemView의 내용을 업데이트하는 데 사용됩니다.
자세한 정보 확인 RecyclerView.Adapter#onBindViewHolder
참조 URL : https://stackoverflow.com/questions/37523308/when-onbindviewholder-is-called-and-how-it-works
'programing' 카테고리의 다른 글
확인없이 모든 Chocolatey 응용 프로그램을 업데이트하려면 어떻게합니까? (0) | 2021.01.17 |
---|---|
사전 정의 된 시드 목록에 대한 문자열 테스트를위한 가장 빠른 C ++ 알고리즘 (대소 문자 구분 안 함) (0) | 2021.01.17 |
Python의 ftplib를 사용하여 이식 가능한 디렉토리 목록 가져 오기 (0) | 2021.01.17 |
std :: string을 const wchar_t *로 변환하고 싶습니다. (0) | 2021.01.17 |
URL에서 이미지를 프로그래밍 방식으로 저장하려면 어떻게합니까? (0) | 2021.01.17 |