kotlin recyclerview数据分页示例
时间: 2023-09-20 22:03:03 浏览: 128
以下是一个使用 Kotlin 和 RecyclerView 实现数据分页的示例:
1. 首先,我们需要定义一个包含数据的列表和当前页码的类:
```
data class Page(
val data: List<Data>,
val page: Int
)
```
2. 接下来,我们需要定义一个 RecyclerView.Adapter,并实现分页逻辑:
```
class DataAdapter(private val pageSize: Int) : RecyclerView.Adapter<DataViewHolder>() {
private var data: MutableList<Data> = mutableListOf()
private var currentPage = 1
fun addPage(page: Page) {
data.addAll(page.data)
currentPage = page.page
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DataViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_data, parent, false)
return DataViewHolder(view)
}
override fun onBindViewHolder(holder: DataViewHolder, position: Int) {
holder.bindData(data[position])
if (position == data.size - pageSize/2) {
// 加载下一页
loadNextPage()
}
}
override fun getItemCount(): Int {
return data.size
}
private fun loadNextPage() {
// 构造下一页请求,例如:
val nextPage = Page(data = listOf(Data(), Data(), Data()), page = currentPage + 1)
addPage(nextPage)
}
}
```
3. 最后,我们需要在 Activity 或 Fragment 中使用 RecyclerView 和 DataAdapter:
```
class MainActivity : AppCompatActivity() {
private lateinit var recyclerView: RecyclerView
private lateinit var adapter: DataAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
recyclerView = findViewById(R.id.recycler_view)
recyclerView.layoutManager = LinearLayoutManager(this)
adapter = DataAdapter(pageSize = 10)
recyclerView.adapter = adapter
// 加载第一页
val firstPage = Page(data = listOf(Data(), Data(), Data()), page = 1)
adapter.addPage(firstPage)
}
}
```
这是一个简单的示例,你可以根据自己的需求进行修改和扩展。
阅读全文