abstract class BaseRecyclerViewAdapter<T, VDB : ViewDataBinding>(var items: List<T>) :
RecyclerView.Adapter<BaseRecyclerViewAdapter<T,VDB>.BaseViewHolder>(){
@LayoutRes
abstract fun getLayoutResId(): Int
var binding: Any? = null
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): BaseRecyclerViewAdapter<T, VDB>.BaseViewHolder {
return BaseViewHolder(
LayoutInflater.from(parent.context).inflate(
getLayoutResId(),
parent,
false
)
)
}
override fun getItemCount() = items.size
open inner class BaseViewHolder(view : View) : BindingViewHolder<VDB>(view)
}
https://jungwoon.github.io/android/util/2020/10/05/BaseRecyclerViewAdapter.html
리사이클러뷰 축약 - 데이터 바인딩으로 리사이클러 뷰 축약 | Jungwoon Blog
최근 개인적으로 이직을 하고 급하게 프로젝트를 진행하느라 장시간 포스팅이 소홀해졌는데, 프로젝트도 막바지이고 프로젝트를 진행하면서 알게된 삽질(?)을 공유하고자 포스팅을 다시 시작
jungwoon.github.io
이 블로그를 참조해서 만들었다.
abstract class PagingRecyclerViewAdapter<T : Any, VDB : ViewDataBinding>(var items: List<T>) :
PagingDataAdapter<T, PagingRecyclerViewAdapter<T,VDB>.BaseViewHolder>(object :
DiffUtil.ItemCallback<T>() {
override fun areItemsTheSame(oldItem: T, newItem: T): Boolean =
oldItem == newItem
override fun areContentsTheSame(oldItem: T, newItem: T): Boolean =
areItemsTheSame(oldItem, newItem)
}){
@LayoutRes
abstract fun getLayoutResId(): Int
var binding: Any? = null
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): PagingRecyclerViewAdapter<T, VDB>.BaseViewHolder {
return BaseViewHolder(
LayoutInflater.from(parent.context).inflate(
getLayoutResId(),
parent,
false
)
)
}
override fun getItemCount() = items.size
inner class BaseViewHolder(view : View) : BindingViewHolder<VDB>(view)
}
여기서 Paging3에 적용하려면 이런식으로
'프로그램 > android' 카테고리의 다른 글
안드로이드 Jetpack (0) | 2022.07.09 |
---|---|
안드로이드 스튜디오 설치 (0) | 2021.11.01 |
댓글