gpt4 book ai didi

android - kotlin RecyclerView 分页

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:23 27 4
gpt4 key购买 nike

我需要让我的 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)
}

关于android - kotlin RecyclerView 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51433106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com