본문 바로가기

Android

AsyncTask 사용 시 E/RecyclerView: No adapter attached; skipping layout 해결

처음 AsyncTask를 사용해보며 백그라운드 작업을 완료한 뒤

onPostExcute 콜백함수에서 리사이클러뷰 어댑터까지 세팅하는 구조로 코딩을 했다.

 

앱은 정상동작했지만 에러로그에 계속

E/RecyclerView: No adapter attached

라는 문장이 확인되었다.

 

검색해보니 메인 스레드가 한번 쭉 지나가면서 xml에 정의된 리사이클러뷰를 점검했더니

아직 어댑터가 연결돼있지 않으니까 해당 에러를 출력하고,

뒤늦게 백그라운드 작업이 완료돼서 앱은 정상동작하는 느낌이었다.

(현시점 정확한 안드로이드의 구조를 몰라서 논리적인 설명이 어렵다)

 

그래서 빈 리스트를 주면서 onCreate (혹은 onCreateView) 함수 안에

비어있는 리사이클러뷰를 정상세팅해주고,

onPostExcute에서는 notifyDataChanged() 함수를 호출했다.

그러면 백그라운드 작업이 완료되었으므로

배열에 반영되어 에러도 없애고 안정적인 동작이 가능해진다.