美文网首页
kotlin语言实现简单的recycleview

kotlin语言实现简单的recycleview

作者: 会写代码的小猿猴 | 来源:发表于2021-07-12 14:09 被阅读0次

刚刚到了新公司,看到一个新的布局,好奇学习了一下。
记录一下自己的心情,作为一个云南本土的程序员,今天谈转正工资的时候再次刷新了我对云南程序员市场的认知,自己进来快两个月,学历也不算低,虽然学校不是985、211,但也是全国排名前60的名校,一直兢兢业业,程序开发进度甚至赶超老员工,谈了个5200,没五险,周末单休,虽然承诺了奖金之类的东西,还有什么后面底薪上万不是梦,但以我一年的经验来看,估计又是一个可望不可即的大饼吧,算了,就当是过度吧,好好提升一下自己才是王道。
正式进入正题。
recycleView是后面推出来的一种类似于listView的布局,其实现在项目开发中listview基本上都被recycleview顶替了,因为recycleview比listview更好,具体好在哪里呢?
recycleview支持线性布局、网格布局、瀑布流布局三种布局,还可以切换为横向滚动,这几个用listview无法直接实现。
下面就正式开始把recycleview用起来吧。
首先要先添加recycleview的依赖,其实在android4.0以后是不需要添加依赖的,在这里也不多坠诉了,需要添加的可以自行百度。
直接上代码吧,都有注释:
首先和listview一样,先定义布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/myrecycleview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>

就是简单地在activity布局里面加了个recycleview布局
下面是recycleview的item布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="60dp" />

    <ImageView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="60dp"
        android:scaleType="centerCrop"
        android:id="@+id/fruit"/>
</LinearLayout>

然后是recycleview的适配器,recycleview的适配器是继承recycleview.adapter

class FruitAdapter(var date: List<String>) : RecyclerView.Adapter<FruitAdapter.MyHolder>() {

    /*返回每一个item的布局*/
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyHolder {
        var view = from(parent.context).inflate(R.layout.item_layout, parent, false)
        return MyHolder(view)
    }

    /*将控件和数据绑定*/
    override fun onBindViewHolder(holder: MyHolder, position: Int) {
        holder.itemView.name.text = date[position]
        holder.itemView.fruit.setImageResource(R.mipmap.ic_launcher)
    }


    //内部类,绑定控件
   /* 定义一些控件来绑定itemview的控件,但在kotlin中不用findviewbyid,所以不用绑定*/
    class MyHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {

    }

    /*返回item的条数*/
    override fun getItemCount(): Int {
        return date.size
    }
}

activity代码:

    var fruitAdapter: FruitAdapter? = null
    var datalist: ArrayList<String>? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        datalist = ArrayList<String>(5)
        for (i in 0..4){
          datalist!!.add(""+i)
        }
        myrecycleview.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
        fruitAdapter = FruitAdapter(datalist!!)
        myrecycleview.adapter = fruitAdapter
    }
}

关键代码是
myrecycleview.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
需要给recycleview指定一个LinearLayoutManager,构造参数第一个是一个上下文对象,第二个参数是设置水平或者竖直排列,第三个参数是 是否倒序排列。

好了,上面就是recycleview最简单的使用了,感兴趣的码友可以留言讨论

相关文章

网友评论

      本文标题:kotlin语言实现简单的recycleview

      本文链接:https://www.haomeiwen.com/subject/yqsfpltx.html