可以轻松实现ListView的同样效果,并且优化了不足之处。
一、导入依赖
在app/build.gradle中导入依赖
dependencies {
//如果有新版本,鼠标放在上面会提示更新
implemention 'androidx.recyclerview:recyclerview:1.1.0'
}
二、在布局文件中使用控件
<androidx.recyclerview.widget.RecyclerView />
三、准备适配器(Adapter)
class FruitAdapter(val fruitList: List<Fruit>) :
RecyclerView.Adapter<FruitAdapter.ViewHolder>() {
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
// 对Item中组件进行绑定
val textView = findViewById(R.id.**)
val img = findViewById(R.id.**)
}
//创建ViewHolder实例,导入item布局,并将item传入ViewHolder中并返回
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) {
val view = LayoutInflater.from(parent.Context)
.inflate(R.layout.item,parent,false)
val viewHolder = ViewHolder(view)
//item中组件设置事件
viewHolder.img.setOnClickListener{}
return viewHolder
}
//对item中组件赋值
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val fruit = fruitList[position]
holder.textView.text = fruit.text
holder.img.setImageResource(fruit.imageId)
}
//返回子项数量
override fun getItemCount() = fruitList.size
}
四、在主线程中给RecyclerView设置适配器
val layoutManager = LinearLayoutManager(this)
// recyclerView是组件id
recyclerView.layoutManager = layoutManager
val adapter = FruitAdapter(fruitList) // 传入数据集合给Adapter
recyclerView.adapter = adapter
五、让RecyclerView横向滚动
上一小节代码LinearLayoutManager默认是纵向滚动,在它下面加上如下代码可实现横向滚动。
layoutManager.orientation = LinearLayoutManager.HORIZONTAL
六、让RecyclerView实现瀑布流布局
// 更换LinearLayoutManager(this)为:
// 3表示三列,VERTICAL表示纵向排列
StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)