글

라벨이 notifycation인 게시물 표시

RecyclerView 에서 notifyItemChanged()의 payload 이해하기

이미지
noti fyItemChanged()의  payload RecyclerView를 사용하다 보면 특정 position 항목만 갱신해야 될 때가 있습니다. 예를들어 버튼을 클릭했을 때, RecyclerView의 마지막 항목만 애니메이션하거나 마지막 항목의 텍스트나 이미지를 업데이트할 수 있습니다. 안드로이드 RecyclerView는 Adapter의  onCreateViewHolder() ,   onBindViewHolder() 를 override해서 구현합니다. 보통 특정 position 항목만 갱신할 때는 notifyItemChanged(position) 을 사용하고 여러개가 변경된 경우 notifyItemRangeChanged(positionStart, itemCount) 을 사용합니다. 하지만  onBindViewHolder() 는 대부분 뷰를 초기화 작업들이 있기 때문에 모든 View를 업데이트하지 않고 특정 View만 Animation 한다던가 TextView의 text만 변경하는 작업들을 하고 싶을 때는 뭔가 조건문으로 처리해야 할 필요성이 생깁니다. 그래서 Recycerview에 payload라는 기능이 추가되었습니다. payload란 무엇일까? notifyItemChanged(position, payload) 에서 payload는 아답터의  onBindViewHolder()가  호출될 때 넘겨받는 객체입니다. 특정 position의 holder를 업데이트할 때 payload 값으로 구분하여 애니메이션 하거나 뷰를 업데이트할 수도 있습니다. 사용하는 방법? notifyItemChanged(int position, Object payload) 업데이트하고 싶은 position 항목에게 payload를 전달합니다. notifyItemRangeChanged(int positionStart, int itemCount, Object payload) 업데이트하고 ...