본문 바로가기
  • 안녕하세요,,, 안녕히가세요,,,,
프로그램/android

RecyclerView를 간략하게 줄여보기 + paging3에 적용

by 차보루타 2022. 7. 11.

 

 

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

댓글