class MainActivity: AppCompatActivity {
private lateinit var binding: ActivityMainBinding
private lateinit var adapter: AnimalListAdapter
override fun onCreate(savedInstanceState: Bundle?) {
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
...
initRecyclerView(binding.rvAnimalList)
}
...
private fun initRecyclerView(recyclerView: RecyclerView) {
recyclerView.run {
adapter = adapter
...
}
}
}
위와 같이 하면 다음과 같이 No adapter attached; skipping layout 오류가 발생한다.
왜 그런지 initRecyclerView() 메소드의 adapter에 대입되는 값 adapter를 확인한 결과, AnimalListAdapter의 인스턴스가 아니라 RecyclerView의 getAdapter() 메소드였다.
@Nullable
public Adapter getAdapter() {
return mAdapter;
}
AnimalListAdapter 인스턴스 변수명을 adapter가 아닌 다른 것으로 바꿔주면 된다.
RecyclerView 인스턴스 변수명을 정할 때 의미를 명확히 알 수 있도록 명명하는 것이 중요하다는 것을 배웠다.