刚刚到了新公司,看到一个新的布局,好奇学习了一下。
记录一下自己的心情,作为一个云南本土的程序员,今天谈转正工资的时候再次刷新了我对云南程序员市场的认知,自己进来快两个月,学历也不算低,虽然学校不是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最简单的使用了,感兴趣的码友可以留言讨论
网友评论