이 에러는 RecyclerView가 화면에 레이아웃을 그리려는 시점에 아직 Adapter가 설정되지 않았기 때문에 발생합니다.
대부분 api 응답하는 부분안에 recyclerView.adapter = myAdapter 를 넣거나
라이브데이터 옵저버 타는 부분에 recyclerView.adapter = myAdapter 를 넣어서
오류가 발생합니다. 심지어 클릭리스너에도 넣는 경우도 있습니다.
이건 리사이클러뷰를 생성하고 아답터 초기화를 나중에 해서 발생합니다. 옵저버타는 부분에 넣는 경우 최악의 경우
옵저버에 데이터를 넣지 않으면 평생 아답터 초기화는 이뤄지지 않습니다.
명심할것! 리사이클러뷰는 onCreate()에 호출할때 아답터도 같이 초기화하는것을 머릿속에 넣으세요.
주요 원인:
Adapter 설정 타이밍 문제 — RecyclerView가 XML에서 inflate되면 즉시 레이아웃을 시도하는데, Adapter를 네트워크 응답 콜백이나 비동기 작업 이후에 설정하면 그 사이에 이 에러가 출력됩니다.
해결 방법 — onCreate/onCreateView에서 빈 리스트로라도 Adapter를 먼저 연결하고, 데이터가 오면 갱신하면 됩니다:
// onCreate에서 바로 설정
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = myAdapter // 빈 리스트로 초기화된 adapter
// 데이터 로드 후
myAdapter.submitList(newData) // 또는 notifyDataSetChanged()
실질적으로는 크래시를 일으키지 않는 경고 수준의 로그이므로, 앱 동작에 문제가 없다면 무시해도 됩니다. 다만 Adapter 설정 시점을 앞당기면 로그가 사라집니다.
'안드로이드 개발 > 개발팁' 카테고리의 다른 글
| 구글공식사이트에서 구버전 안드로이드스튜디오 다운받기 (1) | 2025.09.01 |
|---|---|
| 상태바,하단의 소프트키 가려지는 현상 해결하기 (3) | 2025.08.26 |
| AGP와 Gradle 버전 맞추기 (2) | 2025.08.04 |
| 반드시 CoroutineScope를 직접 써야 하는 예시 (공식문서 기반) (0) | 2025.07.17 |
| 코루틴 스코프 쉽게 외우기 (1) | 2025.06.28 |