[Android] java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableList

thsamajiki·2023년 11월 26일
0

트러블슈팅

목록 보기
13/25

오류 상황

다음과 같이 ListAdapter를 상속받은 RecyclerView 어댑터를 생성해서 RecyclerView 아이템(Item)을 추가하도록 메소드를 구현해서 실행했더니

class DataListAdapter: ListAdapter<String, DataListAdapter.ViewHolder>(diffUtil) {

    fun addItem(position: Int) {
        currentList.add(0, Item())
    }
	...
}

다음과 같은 오류가 발생했다.
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.work, PID: 22959
    java.lang.UnsupportedOperationException
        at java.util.Collections$UnmodifiableList.remove(Collections.java:1359)

UnsupportedOperationException 에러인데, currentList는 read-only 리스트라서 add, remove 등 리스트에 변화를 줄 때 발생한다.



해결 방법

currentList를 직접 변경하지 않고, 새로운 List에 currentList를 복사하여 아이템을 추가해주면 된다.

class DataListAdapter: ListAdapter<String, DataListAdapter.ViewHolder>(diffUtil) {
    fun addItem(position: Int) {
    	val dataList = ArrayList<Item>(currentList)
        dataList.add(0, Item())
    }
	...
}
profile
안드로이드 개발자

0개의 댓글