마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프래그먼트 갱신 추가 질문입ㄴㅣ다

0 추천

말씀해 주신대로 onCreateViewHolder로 setOnClickListener 부분을 옮겼습니다. 문제는, onBindViewHolder의 position을 onCreateViewHolder에서 호출하는 부분입니다.ㅠㅠ 

    inner class FollowRecyclerViewAdapter: RecyclerView.Adapter<RecyclerView.ViewHolder>(){
        override fun onCreateViewHolder(p0: ViewGroup, p1: Int): RecyclerView.ViewHolder {
            var view = LayoutInflater.from(p0.context).inflate(R.layout.item_follow,p0,false)
            var vh = RecyclerView.Adapter(view)
            //좋아요가 클릭된 경우
            //다시 카운터 매칭
            view.followitem_favorite_imageview.setOnClickListener {
                favoriteEvent(currentUserUid!!, vh.adapterPosition)
            }

            //북마크 아이콘 표시
            if(contentDTOs[p1].uid != currentUserUid){
                view.followitem_bookmark_imageview.visibility = View.VISIBLE
            }

            return CustomViewHolder(view)
        }

        inner class CustomViewHolder(view: View) : RecyclerView.ViewHolder(view) {

        }

        override fun getItemCount(): Int {
            return contentDTOs!!.size
        }

        override fun onBindViewHolder(p0: RecyclerView.ViewHolder, p1: Int) {

            var viewholder = (p0 as CustomViewHolder).itemView

            <--이하 생략-->

        }

}

위의 코드에서 

var vh = RecyclerView.Adapter(view)

이 부분에 빨간줄이 떠서 실행할 수 없습니다.

제가 놓치고 있는 부분이 어느부분인가요?..

 

 

related to an answer for: 프래그먼트 갱신 질문입니다...
병쥐 (300 포인트) 님이 2019년 8월 15일 질문

1개의 답변

+1 추천
var vh = RecyclerView.Adapter(view) 가 아니라

var vh = CustomViewHolder(view)가 되어야 합니다

ViewHolder를 만들어서 리턴해주는 메소드니까 ViewHolder를 만들어야 지요

 

그리고 마지막에 return vh 를 해주면 됩니다
Bateaux (5,200 포인트) 님이 2019년 8월 15일 답변
감사합니다. ㅠㅠ 이부분은 해결했습니다.  그런데 문제가, 좋아요 imageview를 누르면 그 자리에서 아이콘이 바뀌지 않고, recyclerview 맨 끝에서 다시 처음부터 업데이트 된 상태로 아이템들이 load 됩니다. (예를들어, 만약 item 이 2개 였다면, 좋아요  imageview를 누르면 2개 item이 맨 마지막에 추가되어 총 item이 4개가 됩니다).  어떻게 해결할 수 있을까요?
...