RecyclerView Update - (1)

박재원·2024년 1월 22일
0

TIL

목록 보기
31/50
post-thumbnail

RecyclerView 안에 아이템 데이터가 추가, 이동, 삭제 되었을 경우 반영하는 방법을 알아보려고 한다.

  • 아이템 변경: 아이템 내용이 변경되고 위치 변경은 일어나지 않은 경우
  • 구조 변경: DataSet안에서 아이템이 추가, 삭제, 이동되었을 경우

notifyDataSetChanged()

public final void notifyDataSetChanged()
  • 사용하기는 편리하지만 기본적으로 변경사항에 대한 내용을 지정하지 않는다.
  • 모든 아이템과 구조가 유효하지 않다고 가정하고 업데이트를 한다.
  • 성능 측면에서는 효율성은 떨어진다.

notifyItemChanged(int)

public final void notifyItemChanged(int position)
  • 아이템 한 개의 내용이 변경되었을 경우 사용한다.
  • position: 변경된 아이템 위치

notifyItemChanged(int, Object)

public final void notifyItemChanged(int position, Object payload)
  • notifyItemChanged(int)와 동일하지만 payload를 옵선으로 사용할 수 있다.
  • payload: 어탭터의 onBindViewholder()가 호출될때 넘겨받을 수 있는 객체이다.
  • 특정 position의 내용을 payload값으로 구분하여 업데이트할 때 사용된다.

notifyItemRangeChanged(int, int)

public final void notifyItemRangeChanged(int positionStart, int itemCount)
  • 연속된 여러개의 아이템 내용이 변경되었을 경우 사용한다.
  • positionStart: 변경된 아이템의 시작 위치
  • itemCount: 변경된 아이템의 갯수

notifyItemRangeChanged(int, int, Object)

public final void notifyItemRangeChanged(int positionStart, int itemCount, Object payload)
  • notifyItemRangeChanged(int, int)와 동일하지만, payload를 옵션으로 사용할 수 있다.
  • positionStart: 변경된 아이템의 시작 위치
  • itemCount: 변경된 아이템의 갯수
  • payload: 특정 position의 내용을 payload값으로 구분하여 업데이트할 때 사용된다.

0개의 댓글