前言
在经过RecyclerView
段时间的学习,我们知道了在实现RecyclerView
的适配器时,免不了要写一个ViewHolder
。也因如此,我们还要些一段垃圾代码,那就是ViewHolder
类中控件初始化的代码,各种findViewById
漫天飞。在kotlin
的Activity
中已经干掉了findViewById
,那么在RecyclerView
的适配器代码中,能否也干掉findViewById
呢?答案是可以,那么今天就让我们来学习下吧。
今天涉及知识:
- 简化ViewHolder类中控件初始化前需要的配置
- RecyclerView在MainActivity中的使用
- 效果图和项目结构图
- 适配器TestAdapter2源码及需要注意的问题
一.简化ViewHolder类中控件初始化前需要的配置
1.1 RecyclerView依赖
我使用的是Androidx
下的包,所以在使用RecyclerView
之前,我们需要在app_module
对应的build.gradle
中添加以下依赖:
dependencies {
//RecyclerView引用
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha04'
//其他代码省略
//......
}
RecyclerView
引用的最新版本,可以查看Android中文网
1.2 简化适配器ViewHoler需要的配置
在app_module
对应的build.gradle
中添加以下配置:
android {
//@Parcelize标记需要设置 experimental = true
//LayoutContainer插件(适配器的viewHolder不用初始化控件)需要设置 experimental = true
androidExtensions {
experimental = true
}
//其他代码省略
//......
}
二. RecyclerView在MainActivity中的使用
下面给出RecyclerView
在MainActivity
中使用的代码:
open class MainActivity : AppCompatActivity(), View.OnClickListener {
private var nameList:MutableList<String> = mutableListOf("幼稚园","小学","初中","高中","大学")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(com.kotlintest.R.layout.activity_main)
initData()
setListener()
}
private fun initData() {
mRecyclerView.layoutManager = LinearLayoutManager(this)
var testAdapter: TestAdapter2<String> = TestAdapter2(this,nameList)
mRecyclerView.adapter=testAdapter
mRecyclerView.itemAnimator = DefaultItemAnimator() //设置动画
//点击事件
testAdapter.setOnItemClick(object : TestAdapter2.OnItemClick {
override fun click(position: Int) {
testAdapter.setIndex(position)
testAdapter.notifyDataSetChanged()
toast("====点击了 ${nameList.get(position)}=")
}
})
}
private fun setListener(){
mBtnTest.setOnClickListener(this@MainActivity)
}
override fun onClick(v: View) {
when(v.id){
com.kotlintest.R.id.mBtnTest -> {
}
}
}
}
三.效果图和项目结构图
效果图.gif 项目结构图.png四.适配器TestAdapter2源码及需要注意的问题
4.1 TestAdapter2源码
下面贴出适配器TestAdapter2
源码:
网友评论