programing

onBindViewHolder가 호출되면 어떻게 작동합니까?

firstcheck 2021. 1. 17. 10:55
반응형

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

반응형