ui / winkit.android.ui / PaginatedRecyclerView / Adapter / <init>

<init>

Adapter(@LayoutRes emptyLayout: Int = R.layout.view_paginated_recycler_empty, @LayoutRes errorLayout: Int = R.layout.view_paginated_recycler_error)

Adapter abstraction to provide data to PaginatedRecyclerView

Example without define custom empty or error layouts

class MyCustomAdapter: PaginatedRecyclerView.Adapter<Adapter.Holder>() {

override fun onBindRowViewHolder(holder: Holder, position: Int) = holder.bind(data[position])

    val data: ArrayList<String> = ArrayList()

    override fun getRowsCount(): Int = data.size

    override fun clean() = data.clear()

    override fun onCreateRowViewHolder(parent: ViewGroup, type: Int): Holder = Holder(parent)

    fun append (toAppend: List<String>) = data.addAll(toAppend)

    class Holder(parent: ViewGroup): RecyclerView.ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row, parent, false)) {
        fun bind (text: String){
           itemView.findViewById<TextView>(R.id.row_text)?.text = text
        }
    }
}

Example without defining custom empty or error layouts

 class CustomLayoutAdapter: PaginatedRecyclerView.Adapter<CustomLayoutAdapter.Holder>(
     errorLayout = R.layout.custom_error_layout,
     emptyLayout = R.layout.custom_empty_layout
 ) {

     override fun onBindRowViewHolder(holder: Holder, position: Int) = holder.bind(data[position])

     val data: ArrayList<String> = ArrayList()

     override fun getRowsCount(): Int = data.size
     override fun clean() = data.clear()

     override fun onCreateRowViewHolder(parent: ViewGroup, type: Int): Holder = Holder(parent)

     fun append(toAppend: List<String>) = data.addAll(toAppend)

     class Holder(parent: ViewGroup) : RecyclerView.ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row, parent, false)) {
         fun bind(text: String) {
             itemView.findViewById<TextView>(R.id.row_text)?.text = text
         }
     }

     override fun bindEmptyView(title: String?, subtitle: String?, image: Int, view: View) {
         // Implement custom empty recyclerView logic here

         val titleView = view.findViewById<TextView>(winkit.android.ui.R.id.empty_title)
         titleView.text = "$title $subtitle"

         val iconView = view.findViewById<ImageView>(winkit.android.ui.R.id.empty_icon)
         if (image != 0) iconView.setImageResource(image)
         else  iconView.setImageDrawable(null)
     }

     override fun bindErrorView(message: String?, image: Int, view: View) {
         // Implement custom error recyclerView logic here

         val iconView = view.findViewById<ImageView>(winkit.android.ui.R.id.error_icon)
         if (image != 0) iconView.setImageResource(image)
         else  iconView.setImageDrawable(null)
         iconView.visibility = if(image != 0) View.VISIBLE else View.GONE

         val button = view.findViewById<Button>(winkit.android.ui.R.id.error_retry_button)
         button.setOnClickListener { this.recyclerView?.requestFirstPage()}
         button.text = message
     }
}

Parameters

emptyLayout - The empty layout resource

errorLayout - The error layout resource