ui / winkit.android.ui / PaginatedRecyclerView / Adapter
Adapter
abstract class Adapter<VH : ViewHolder> : Adapter<ViewHolder>
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
Constructors
| Name | Summary |
|---|---|
| <init> | Adapter(emptyLayout: Int = R.layout.view_paginated_recycler_empty, errorLayout: Int = R.layout.view_paginated_recycler_error)Adapter abstraction to provide data to PaginatedRecyclerView |
Properties
| Name | Summary |
|---|---|
| emptyLayout | val emptyLayout: IntThe empty layout resource |
| errorLayout | val errorLayout: IntThe error layout resource |
| recyclerView | var recyclerView: PaginatedRecyclerView? |
Functions
| Name | Summary |
|---|---|
| bindEmptyView | open fun bindEmptyView(title: String?, subtitle: String?, image: Int, view: View): UnitExecuted before show the empty data message. Override in case of custom layouts or binding implementation. |
| bindErrorView | open fun bindErrorView(message: String?, image: Int, view: View): UnitExecuted before show the empty data message. Override in case of custom layouts or binding implementation. |
| clean | abstract fun clean(): UnitPerform the data clean |
| getItemCount | fun getItemCount(): Int |
| getItemViewType | fun getItemViewType(position: Int): Int |
| getRowViewType | open fun getRowViewType(position: Int): IntReplace RecyclerView.Adapter.getItemViewType |
| getRowsCount | abstract fun getRowsCount(): IntReplace RecyclerView.Adapter.getItemCount |
| onBindRowViewHolder | abstract fun onBindRowViewHolder(holder: VH, position: Int): UnitReplace RecyclerView.Adapter.onBindViewHolder |
| onBindViewHolder | fun onBindViewHolder(holder: ViewHolder, position: Int): Unit |
| onCreateRowViewHolder | abstract fun onCreateRowViewHolder(parent: ViewGroup, type: Int): VHReplace RecyclerView.Adapter.onCreateViewHolder |
| onCreateViewHolder | fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder |
| showError | fun showError(message: String): UnitClean the data and showing the “error” recyclerView with the selected message. |