ui / winkit.android.ui / PaginatedRecyclerView
PaginatedRecyclerView
class PaginatedRecyclerView :
FrameLayout
An helpful View that implement a RecyclerView with pullToRefresh and Loadmore feature. This recyclerView ask in a callback the pages and allow to implement the “no data” and “error” state.
paginatedRecycler.getPageListener = getPage@{ index: Int ->
getHttpData(index) { data -> // connection error on data == null
if (data != null) {
adapter.append(data)
paginatedRecycler.haveMore = data.size < TOTAL_SIZE
adapter.notifyDataSetChanged()
} else {
if(index == 0)
adapter.showError("Connection error on first page")
else {
paginatedRecycler.haveMore = false
Toast.makeText(this, "Connection error", Toast.LENGTH_SHORT).show()
}
}
}
}
paginatedRecycler.requestFirstPage()
Attr ref R.styleable#PaginatedRecyclerView
Types
Name | Summary |
---|---|
Adapter | abstract class Adapter<VH : ViewHolder> : Adapter<ViewHolder> Adapter abstraction to provide data to PaginatedRecyclerView |
Constructors
Name | Summary |
---|---|
<init> | PaginatedRecyclerView(context: Context , attrs: AttributeSet ? = null, defStyleAttr: Int = 0) An helpful View that implement a RecyclerView with pullToRefresh and Loadmore feature. This recyclerView ask in a callback the pages and allow to implement the “no data” and “error” state. |
Properties
Name | Summary |
---|---|
adapter | var adapter: Adapter <*>? Adapter instance to bind |
emptyIcon | var emptyIcon: Int The icon drawable resource to show in “no data” case. |
emptySubtitle | var emptySubtitle: String ? The subtitle to show in “no data” case. |
emptyTitle | var emptyTitle: String ? The title to show in “no data” case. |
errorIcon | var errorIcon: Int The icon drawable resource to show in “error” case. |
getPageListener | var getPageListener: (index: Int ) -> Unit Callback to notify the user loadMore of pullToRefresh action |
haveMore | var haveMore: Boolean LoadMore availability |
layoutManager | var layoutManager: LayoutManager? The wrapped recyclerView’s layout manager |
refreshing | var refreshing: Boolean SwipeRefresh recyclerView progress visibility |
Functions
Name | Summary |
---|---|
requestFirstPage | fun requestFirstPage(): Unit Clean the data and request the first page (like the user pullToRefresh action), getPageListener will be called with index 0. |
Extension Functions
Name | Summary |
---|---|
measure | fun View .measure(callback: (width: Int , height: Int ) -> Unit ): Unit Calculate the view sizes adding the a ViewTreeObserver.OnGlobalLayoutListener and removing it after the first occurrence. |
measureIfNeeded | fun View .measureIfNeeded(callback: (width: Int , height: Int ) -> Unit ): Unit Call the callback if the view is already measured passing the view’s sizes, otherwise call the measure method. |