작성
·
171
0
override fun onBindViewHolder(holder: BookSearchViewHolder, position: Int) {
holder.bind(getItem(position))
holder.itemView.setOnClickListener {
onItemClickListener?.let {
it(getItem(position))
}
}
}
private var onItemClickListener: ((Document) -> Unit)? = null
fun setOnItemClickListener(listener: (Document) -> Unit) {
onItemClickListener = listener
}
답변 3
1
0
혹시 저의 유튜브 강의를 보셨나요? 차이는 리사이클러뷰의 클릭시 동작을 ViewHolder 클래스 안에 설정하느냐, 아니면 어댑터 클래스 안에 설정하느냐입니다.
클릭리스너를 어댑터 안에 넣으면 ViewHolder 클래스가 깔끔해지는 대신, 클릭 이벤트를 받은 뷰홀더를 특정하는 역할을 어댑터가 수행해야 하기 때문에 그 작업을 하는 `setOnItemClickListener` 메소드를 만들고 설정해 준 것입니다.
0
이전에 공부했을 때는 RecyclerView에서 아이템 클릭시 발생하는 로직은 ViewHoler 클래스의 bind함수에서 작업했었는데 이렇게 리스너를 만들어서 onBindViewHolder에서 처리하는 로직은 처음봐서 해당 로직이 어떻게 동작하는지 이해가 안됩니다. 부가설명을 조금 해주신다면 감사하겠습니다!