반응형
recyclerView를 사용하다보면 업데이트(갱신), 추가, 삭제, 수정이 필요할 때가 많다.
간략하게
- 전체적으로 업데이트가 필요할 때
- public final void notifyDataSetChanged()
- 부분갱신적으로 업데이트가 필요할 때
- public final void notifyItemChanged(int position)
- public final void notifyItemChanged(int position, @Nullable Object payload)
- public final void notifyItemRangeChanged(int positionStart, int itemCount)
- public final void notifyItemRangeChanged(int positionStart, int itemCount, @Nullable Object payload)
- 아이템 추가할 때
- public final void notifyItemInserted(int position)
- public final void notifyItemRangeInserted(int positionStart, int itemCount)
- 아이템 이동할 때
- public final void notifyItemMoved(int fromPosition, int toPosition)
- 아이템 삭제할 때
- public final void notifyItemRemoved(int position)
- public final void notifyItemRangeRemoved(int positionStart, int itemCount)
- 설명
notifyDataSetChanged()
Data가 변경된 경우 등록된 옵저버에 변경을 알린다.
이 이벤트는 변경된 Data set에 대해 규명하지 않기에 옵저버에게 기존의 모든 아이템과 구조가 유효하지 않을 것이라고 알려준다. LayoutManager는 모든 자료를 다시 바인딩 하고, 모든 View를 다시 레이아웃하게 된다.
가능한 이 이벤트를 사용하는 것보다 해당 상황에 더 적합한 구체적인 이벤트를 사용하는 것이 성능 측면에서 좋다.
notifyItemChanged(int position, @Nullable Object payload)
- position: (필수) 변경된 아이템의 위치
- payload: (옵션) null 값인 경우 모든 업데이트로 식별
특정 아이템만 변경된 경우 등록된 옵저버에 변경을 알린다.
payload는 옵션으로 사용 가능하다.
참고로 notifyItemChanged는 notifyItemRangeChanged를 호출한다.
public final void notifyItemChanged(int position, @Nullable Object payload) {
mObservable.notifyItemRangeChanged(position, 1, payload);
}
notifyItemRangeChanged(int positionStart, int itemCount, @Nullable Object payload)
- positionStart: (필수) 변경된 첫 번째 아이템의 위치
- itemCount: (필수) 변경된 아이템의 개수
- payload: (옵션) null 값인 경우, 모든 업데이트로 식별
positionStart 위치에서 itemCount 개수까지 아이템이 변경된 경우 옵저버에게 변경을 알린다.
1개가 아닌 연속 여러개의 아이템의 변경이 있을 때 사용한다.
notifyItemInserted(int position)
- position: (필수) 새로 삽입된 아이템의 위치
특정한 위치에 아이템이 변경된 경우 옵저버에게 변경을 알린다.
주의할 점은 position은 0부터 시작한다.
notifyItemMoved(int fromPosition, int toPosition)
- fromPosition: (필수) 아이템의 현재 위치
- toPosition: (필수) 아이템의 새로운 위치
아이템의 위치가 변경된 경우 옵저버에게 변경을 알린다.
notifyItemRemoved(int position)
- positionStart: (필수) 삭제할 아이템의 위치
아이템이 삭제로 변경된 경우 옵저버에게 변경을 알린다.
728x90
반응형
'개발 > Android' 카테고리의 다른 글
[Android] string.xml 공백 넣기 (0) | 2022.05.19 |
---|---|
[Android] 소스 내에서 deprecated된 메소드 찾기 (0) | 2022.05.18 |
[Android] Service 종료 시점 알기 (0) | 2022.05.17 |
[Android] 안드로이드 스튜디오 cannot resolve symbol 'R' (0) | 2022.05.16 |
[Android] MultiDex 로 64K 메서드 제한 해결하기 (0) | 2022.05.16 |
댓글