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: Int The empty layout resource |
errorLayout | val errorLayout: Int The error layout resource |
recyclerView | var recyclerView: PaginatedRecyclerView ? |
Functions
Name | Summary |
---|---|
bindEmptyView | open fun bindEmptyView(title: String ?, subtitle: String ?, image: Int , view: View ): Unit Executed 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 ): Unit Executed before show the empty data message. Override in case of custom layouts or binding implementation. |
clean | abstract fun clean(): Unit Perform the data clean |
getItemCount | fun getItemCount(): Int |
getItemViewType | fun getItemViewType(position: Int ): Int |
getRowViewType | open fun getRowViewType(position: Int ): Int Replace RecyclerView.Adapter.getItemViewType |
getRowsCount | abstract fun getRowsCount(): Int Replace RecyclerView.Adapter.getItemCount |
onBindRowViewHolder | abstract fun onBindRowViewHolder(holder: VH , position: Int ): Unit Replace RecyclerView.Adapter.onBindViewHolder |
onBindViewHolder | fun onBindViewHolder(holder: ViewHolder, position: Int ): Unit |
onCreateRowViewHolder | abstract fun onCreateRowViewHolder(parent: ViewGroup , type: Int ): VH Replace RecyclerView.Adapter.onCreateViewHolder |
onCreateViewHolder | fun onCreateViewHolder(parent: ViewGroup , p1: Int ): ViewHolder |
showError | fun showError(message: String ): Unit Clean the data and showing the “error” recyclerView with the selected message. |