Skip to content

RecyclerView

KIM SEONG GYU edited this page Jul 6, 2020 · 1 revision

BaseAdapter, BaseViewHolder사용

중복코드 해결, 리사이클러뷰 구현에 대한 통일성 부여

예제 코드

Adapter

class ParticipatedProjectsAdapter () : BaseAdapter<ParticipatedProjectsData>(){

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<ParticipatedProjectsData> {
        return ParticipatedProjectsViewHolder(parent)
    }
}
  1. BaseAdapter 상속
  • 해당 어댑터에서 사용할 데이터 모델을 제네릭으로 선언
  1. onCreateViewHolder를 override
  • 사용할 ViewHolder를 만들어 리턴하기만 하면 됨
  • onCreateViewHolder 에서 받은 parent: ViewGroup를 파라미터로 넘겨줌

ViewHolder

class RoundmeetingViewHolder(parent: ViewGroup) : BaseViewHolder<RoundmeetingData>(R.layout.item_roundmeeting, parent) {
    val ImageView_added_card_roundmeeting = itemView.findViewById<ImageView>(R.id.ImageView_added_card_roundmeeting)

    override fun bind(data : RoundmeetingData){
        Glide.with(itemView).load(data.ImageView_added_card_roundmeeting).into(ImageView_added_card_roundmeeting)
    }
}
  1. BaseViewHolder 상속
  • 해당 뷰 홀더에서 사용할 데이터 모델을 제네릭으로 선언
  • 해당 뷰 홀더에서 사용할 item layout의 layoutRes 를 파라미터로 넘겨줌
  • 생성자로 받은 parent 또한 파라미터로 넘겨줌
  1. bind를 override
  • 매개변수로 받은 data가 해당 뷰 홀더에서 사용될 데이터 모델
  • 하던대로 바인딩 해주면 된다.

액티비티 (or 프래그먼트)에 적용할 때

participatedProjectsAdapter = ParticipatedProjectsAdapter()
recycler_participated_projects_list.adapter = participatedProjectsAdapter

파라미터 없이 어댑터 선언 및 적용

participatedProjectsAdapter.addAll(datas)

데이터 적용 시 addAll 메서드로 간편 사용 notify 필요 없음

자세한 클래스 명세는 BaseAdapter, BaseViewHolder 를 열어보면 이해 가능함

적응하면 리사이클러뷰 5분만에 찍어내는 것 가능 !