본문 바로가기

Android/TroubleShooting

[Android] RecyclerView Adapter 명명 조심하기

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
반응형