[개념] 리스트뷰와 리사이클러뷰에서 ViewHolder 패턴 활용
2. RecyclerView 에서의 ViewHolder
RecyclerView.Adapter 를 상속하여 어댑터를 만들 때, RecyclerAdapter에서 구현해야 할 함수들은 onCreateViewHolder, onBindViewHolder, getItemCount, ViewHolder 입니다.
RecyclerAdapter 코드
class RecyclerAdapter(private val items: ArrayList<Model>) :
RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() {
class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {
fun bind(listener: View.OnClickListener, item: Model) {
}
}
override fun getItemCount() = items.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerAdapter.ViewHolder {
val View = LayoutInflater.from(parent.context).inflate(R.layout.board_list, parent, false)
return RecyclerAdapter.ViewHolder(View)
}
override fun onBindViewHolder(holder: RecyclerAdapter.ViewHolder, position: Int) {
val item = items[position]
val listener = View.OnClickListener {it ->
Toast.makeText(it.context, "Clicked: ${item.title}", Toast.LENGTH_SHORT).show()
}
holder.apply {
bind(listener, item)
itemView.tag = item
}
}
}
ViewHolder:
getItemCount: 보여줄 리스트 몇 개인지 알려줍니다
onCreateViewHolder : ViewHolder를 새로 만들 때 호출되는 메서드로, 이를 통해 각 아이템을 위한 XML 레이아웃을 활용한 뷰 객체를 생성하고 이를 뷰 홀더 객체에 담아 리턴 합니다. ViewHolder 가 아직 어떠한 데이터에 바인딩된 상태가 아니기 때문에 각 뷰의 내용 (TextView 의 Text 등)은 없습니다.
onBindViewHolder: 생성된 View에 보여줄 데이터를 설정 때 호출되는 메서드입니다. position 이라는 파라미터를 활용하여 데이터의 위치(index값)에 맞게 아이템 레이아웃을 바인딩해줄 수 있다.
4. reference
https://developer.android.com/guide/topics/ui/layout/recyclerview
https://developer.android.com/guide/topics/ui/layout/recyclerview-custom
Author And Source
이 문제에 관하여([개념] 리스트뷰와 리사이클러뷰에서 ViewHolder 패턴 활용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ilil1/개념-리스트뷰와-리사이클러뷰에서-ViewHolder-패턴-활용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)