728x90
반응형
문제
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 인스턴스 변수명을 정할 때 의미를 명확히 알 수 있도록 명명하는 것이 중요하다는 것을 배웠다.
구독과 공감은 블로그 운영에 큰 힘이 됩니다! ♡
긍정적인 댓글 남겨주시면 감사드리며,
보완해야 할 점이 있으면 댓글로 남겨주셔도 좋습니다!
728x90
반응형