Day 11 | 进阶清单元件RecyclerView

RecyclerView

RecyclerView是进阶版的清单元件,它取代了基本的ListView与GridView,不只是因为RecyclerView拥有多元的呈现样貌,而是它强制开发者实作ViewHolder类别,以实现画面复用的机制。

指派给RecyclerView的Adapter必须继承自RecyclerView.Adapter类别,以下说明如何使用RecyclerView

  1. 客制化Adapter与ViewHolder,MyAdapter须继承RecyclerView.Adapter类别,并建立ViewHolder继承自 RecyclerView.ViewHolder类别。

    class MyAdapter(private val data: ArrayList<Item>, private val layout: Int):
    RecyclerView.Adapter<MyAdapter.ViewHolder>() {
    //实作RecyclerView.ViewHolder来储存View
    class ViewHolder(V: View): RecyclerView.ViewHolder(V){
    	val img_photo = v.findViewById<ImageVlew>(R.id.img_photo)
    	val tv_msg = v.findViewById<TextView>(R.id.tv_msg)
    }
    //回传资料数量
    override fun getItemcount() = data.size
    //建立ViewHolder与Layout并连彼此
    override fun onCreateViewHolder(viewGroup: ViewGroup, position: Int) :
    ViewHolder {
    	val v= LayoutInflater.from(viewGroup.context).inflate(layout, viewGroup, false)
    	return ViewHolder (v)
    }
    //将资科指派给元件呈现
    override fun onBindViewHolder (holder: ViewHolder, position: Int) {
    	holder.img_photo.setImageResource (data[position].photo)
    	holder.tv_msg.text = data[position].name
    }
    
  2. 设定排列方式与方向。RecyclerView的排列方式由LayoutManager决定,最常见的是使用LinearLayoutManager与GridLayoutManager实现ListView与GridView的效果,并用LayoutManager的orientation属性决定方向。

    //建立LipearLayoutManager物件
    val linearLayoutManager = LinearLayoutManager (this)
    //设定清单的排列方向
    linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
    //连结LinearLayoutManager
    recyclerView.layoutManager = linearLayoutManager
    //连结adapter
    recyclerView.adapter = MyAdapter(item, R.layout,adapter_horizontal)
    //建立GridLayoutManager物件·并设定每栏的数量
    val gridLayoutManager = GridLayoutManager(this, 3)
    //设定清单的排列方向
    gridLayoutManager.orientation = GridLayoutManager.VERTICAL
    //连结GridLayoutManager
    recyclerView.layoutManager  = gridLayoutManaget
    //连结adapter
    recyclerView.adapter = MyAdapter(item, R.layout,adapter_vertical)
    

<<:  排线相机 (续)

>>:  虾皮 Open Platform 与经典程序流程图

[网页漏洞] 资料库漏洞 - 绵花糖花式吃法

後续还有一个系列问题,搭配第30天整理刚好完赛,真是太美妙了...除了解不出来以外 XD 17. E...

赚外快踩到线

境外诈骗集团使用移动式机房的好处 移动式信号追踪难度高於一般固定位置信号 来电显示为台湾电信发号,降...

React Custom hook 踩坑日记 - form hook

今天分享一个简单又常用到的方法来处理表单,先举个新手进入React处理表单时常用到的例子: // 使...

[Day12]PHP 可变函数及回传值

PHP函数 函数返回值return 值通过使用可选的返回语句返回。可以返回包括数组和对象的任意类型。...

Vue3 使用 Bs5 、 Jq 、 gsap

https://bootstrap5.hexschool.com/docs/5.1/getting-...