美文网首页
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