인프런 커뮤니티 질문&답변

jminie님의 프로필 이미지
jminie

작성한 질문수

냉동코더의 알기 쉬운 Modern Android Development 입문

Practice4B-Safe args로 프래그먼트간 데이터 전달하기 (SafeArgs, Parcelable, WebView)

onBindViewHolder에서 아이템 클릭시 발생하는 로직 질문

작성

·

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

jminie님의 프로필 이미지
jminie
질문자

동작의 차이는 없는 것이군요! 감사합니다!

0

냉동코더님의 프로필 이미지
냉동코더
지식공유자

혹시 저의 유튜브 강의를 보셨나요? 차이는 리사이클러뷰의 클릭시 동작을 ViewHolder 클래스 안에 설정하느냐, 아니면 어댑터 클래스 안에 설정하느냐입니다.

클릭리스너를 어댑터 안에 넣으면 ViewHolder 클래스가 깔끔해지는 대신, 클릭 이벤트를 받은 뷰홀더를 특정하는 역할을 어댑터가 수행해야 하기 때문에 그 작업을 하는 `setOnItemClickListener` 메소드를 만들고 설정해 준 것입니다.

0

jminie님의 프로필 이미지
jminie
질문자

이전에 공부했을 때는 RecyclerView에서 아이템 클릭시 발생하는 로직은 ViewHoler 클래스의 bind함수에서 작업했었는데 이렇게 리스너를 만들어서 onBindViewHolder에서 처리하는 로직은 처음봐서 해당 로직이 어떻게 동작하는지 이해가 안됩니다. 부가설명을 조금 해주신다면 감사하겠습니다!

jminie님의 프로필 이미지
jminie

작성한 질문수

질문하기