android - kotlin Recycler查看分页
问题描述
我只需要RecyclerView
加载 10 个项目并在滚动后加载更多 10 个项目并像这样工作。
我使用 . 添加数组中的项目Volley
。
这是我的RecyclerView
适配器。
class newsAdapter constructor(private val activety:MainActivity, private val ListOfCash:ArrayList<newsModling>,
val listener:BTNListener): RecyclerView.Adapter<newsAdapter.ViewHolder>(),BTNListener {
override fun getItemCount(): Int = ListOfCash.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.news_tick, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(ListOfCash[position], listener, ListOfCash)
}
inner class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) {
fun bind(Data: newsModling, listener: BTNListener, listOfnew: ArrayList<newsModling>) {
var ListOfnewsin = listOfnew[adapterPosition]
var newstitle = ListOfnewsin.title
var newsdate = ListOfnewsin.date
itemView.newsDate.text = newsdate
itemView.newsTitle.text = newstitle
itemView.setOnClickListener{
//var cashSTR = cashNumIn.toString()
}
}
}
}
我不知道,我必须使用什么或在哪里输入。
解决方案
尝试将此滚动侦听器与您的recyclerview
.
在加载更多项目时,放置您的逻辑以加载更多项目。
isLastPage
如果没有要加载的项目,将返回 true。
isLoading
获取数据时为真,获取数据时为假。
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
/**
* Pagination class to add more items to the list when reach the last item.
*/
abstract class PaginationScrollListener
/**
* Supporting only LinearLayoutManager for now.
*
* @param layoutManager
*/
(var layoutManager: LinearLayoutManager) : RecyclerView.OnScrollListener() {
abstract fun isLastPage(): Boolean
abstract fun isLoading(): Boolean
override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val visibleItemCount = layoutManager.childCount
val totalItemCount = layoutManager.itemCount
val firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition()
if (!isLoading() && !isLastPage()) {
if (visibleItemCount + firstVisibleItemPosition >= totalItemCount && firstVisibleItemPosition >= 0) {
loadMoreItems()
}// && totalItemCount >= ClothesFragment.itemsCount
}
}
abstract fun loadMoreItems()
}
将此添加到您的recyclerview
var isLastPage: Boolean = false
var isLoading: Boolean = false
recyclerView?.addOnScrollListener(object : PaginationScrollListener(your_layoutManager) {
override fun isLastPage(): Boolean {
return isLastPage
}
override fun isLoading(): Boolean {
return isLoading
}
override fun loadMoreItems() {
isLoading = true
//you have to call loadmore items to get more data
getMoreItems()
}
})
fun getMoreItems() {
//after fetching your data assuming you have fetched list in your
// recyclerview adapter assuming your recyclerview adapter is
//rvAdapter
after getting your data you have to assign false to isLoading
isLoading = false
rvAdapter.addData(list)
}
现在在您的recyclerview
适配器中添加以下方法。
这里的列表是recyclerview
在您的适配器中提供您的列表。
确保在recyclerview
.
fun addData(listItems: ArrayList<yourObject>) {
var size = this.listItems.size
this.listItems.addAll(listItems)
var sizeNew = this.listItems.size
notifyItemRangeChanged(size, sizeNew)
}
推荐阅读
- vue.js - Nuxt - Webpack 插件的 HTML 注入
- php - 如何在 Linux 上使用 php soapclient 克服 maxreceivedmessagesize
- python - 有没有办法在 python matplotlib 中绘制一条线,然后在一段时间后将其删除?
- jquery - 如何在wix中切换开关元素
- azure-log-analytics - Azure 顾问建议:应在您的计算机上解决 Log Analytics 代理运行状况问题
- c# - 带有类型的运算符“是”,由反射检索
- python - 将机器学习模型的发起者传递给 Python 函数?
- kubernetes - 为什么最新版本的 Ubuntu 不再有 Kubernetes
- android - 具有延迟操作的处理程序 post(Runnable r)
- swiftui - SwiftUI Text 意外填充底部和顶部