RecyclerView高级控件 & 案例实践
RecyclerView是Android 及其重要的一个高级UI控件,使用频率及其的高,APP的90%以上的页面都会使用的到。由于其出色的性能和插拔式的架构设计,被全世界广大开发者一致称赞。
LinerLayoutManager列表布局
纵向列表 | 横向列表 |
---|---|
纵向列表
recyclerView.layoutManager =LinearLayoutManager(context, VERTICAL, false)
recyclerView.adapter = MyAdapter()
横向列表
recyclerView.layoutManager =LinearLayoutManager(context, HORIZONTAL, false)
recyclerView.adapter = MyAdapter()
数据源适配器
inner class MyAdapter : RecyclerView.Adapter<ViewHolder>() {
// 【必须复写】创建ItemView的ViewHolder,用于后续的数据绑定
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view =LayoutInflater.from(context).inflate(R.layout.item_view_staggered, parent, false)
return ViewHolder(view)
}
// 【必须复写】告诉RecyclerView列表上item的条数
override fun getItemCount(): Int {
return 20
}
// 【必须复写】item的数据绑定
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemView.item_head.setImageResource(R.drawable.icon_jetpack)
holder.itemView.item_name.text = "【${position}】移动端架构师体系课"
holder.itemView.item_message.text =
"移动开发“两极分化”,没有差不多的“中间层,唯有尽早成长为架构师,你的职业道路才能走的更远更稳"
}
}
// 创建一个ViewHolder 必须继承自 RecyclerView.ViewHolder。用于后续的数据绑定
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
}
GridLayoutManager网格布局
recyclerView.layoutManager = GridLayoutManager(context, 2)
recyclerView.adapter = MyAdapter()
StaggeredGridLayoutManager瀑布流布局
recyclerView.layoutManager =StaggeredGridLayoutManager(2, VERTICAL)
recyclerView.adapter = MyAdapter()
Kotlin扩展插件
可以直接使用布局中的控件id来操作view控件, 不用再findViewById。大大提高工作效率,减少模板代码量
需要在根目录下的build.gradle添加kotlin-android-extensions
插件
buildscript {
ext.kotlin_version = "1.3.72"
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
需要在app/build.gradle应用kotlin-android-extensions
插件
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}