RecyclerView 的基础使用
程序员文章站
2022-03-10 23:42:33
类class MyListAdapter(private var list: ArrayList, private val activity: FragmentActivity ) : RecyclerView.Adapter() { @SuppressLint("ResourceType") override fun...
类
class MyListAdapter(private var list: ArrayList<JSONObject>,
private val activity: FragmentActivity
) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
@SuppressLint("ResourceType")
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
// 渲染 card
val item = LayoutInflater.from(parent.context).inflate(R.layout.这个是重复利用的项单独构成的 xml, parent, false)
return listViewHolder(item)
}
// 加载新项,这个是自定义函数,网络请求到数据后调用
fun loadData(newList: ArrayList<JSONObject>, isRefresh: Boolean){
if (isRefresh) {
// 如果是刷新,清空暂存的所有数据
list.clear()
}
list.addAll(newList)
notifyDataSetChanged()
}
override fun getItemCount(): Int {
return list.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
// 获取当前位置的项,赋值
val item = list[position]
holder.itemView.createDate.text = item.getString("createDate")
holder.itemView.arrow.setOnClickListener {
// 这里可以执行点击事件
}
}
class listViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
}
}
使用
// 创建数据源
val adapter = activity?.let { MyListAdapter(ArrayList(), it) } //类的初始化
listRecycle(就是 RecyclerView).layoutManager = LinearLayoutManager(context!!, LinearLayoutManager.VERTICAL,false) // 必须要有的 layoutmanager,不一定是 linear
listRecycle.adapter = adapter
请求数据
adapter?.let { getList(token, it, false) } // 传入的值,false 对应的是 isRefresh 参数,表示是否为刷新
下拉刷新和上滑加载时调用请求数据函数并传入对应的参数即可
本文地址:https://blog.csdn.net/weixin_44774877/article/details/108123914