RecyclerView 업데이트 오류

박재원·2024년 2월 1일
0

TIL

목록 보기
40/50
post-thumbnail

API 통신을 통해 받아온 데이터들을 리사이클러뷰에 출력을 한 후 아이템 뷰를 클릭하면 보관함에 아이템을 보관하는 기능을 구현하고 있었다. 여러 개를 클릭 한 후 보관함 프레그먼트안에서 뿌려진 아이템을 다시 클릭하게 되면 삭제기능을 구현하려고 했는데 클릭한 순서대로 삭제를 하면 문제가 없는데 중간이나 처음에 추가한 아이템을 삭제하게 되면 에러가 발생했다.

오류내용

  • 데이터 변경에 대한 범위를 정산적으로 지정해주지 않아 생기는 것 같기도 하다.
  • 또한 업데이트 함수 에러일 수도 있다고 생각했다.
  • 더 찾아보니 삼성 안드로이드 기기에서 발생하는 RecyclerView Scroll 에러라고 한다.

해결방법

class GridLayoutManagerWrapper: GridLayoutManager {
    constructor(context: Context, spanCount: Int) : super(context, spanCount) {}
    constructor(context: Context, spanCount: Int, orientation: Int, reverseLayout: Boolean) : super(context, spanCount, orientation, reverseLayout) {}
    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}

    override fun supportsPredictiveItemAnimations(): Boolean {
        return false
    }
}
with(binding) {
	rvSearch.adapter = imageAdapter
	rvSearch.layoutManager = GridLayoutManagerWrapper(context, 2)
    }

0개의 댓글