美文网首页
Kotlin笔记(49) — RecyclerView简化Vie

Kotlin笔记(49) — RecyclerView简化Vie

作者: 奔跑的佩恩 | 来源:发表于2021-02-04 08:27 被阅读0次

前言

在经过RecyclerView段时间的学习,我们知道了在实现RecyclerView的适配器时,免不了要写一个ViewHolder。也因如此,我们还要些一段垃圾代码,那就是ViewHolder类中控件初始化的代码,各种findViewById漫天飞。在kotlinActivity中已经干掉了findViewById,那么在RecyclerView的适配器代码中,能否也干掉findViewById呢?答案是可以,那么今天就让我们来学习下吧。

今天涉及知识:

  1. 简化ViewHolder类中控件初始化前需要的配置
  2. RecyclerView在MainActivity中的使用
  3. 效果图和项目结构图
  4. 适配器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中的使用

下面给出RecyclerViewMainActivity中使用的代码:

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源码:

相关文章

网友评论

      本文标题:Kotlin笔记(49) — RecyclerView简化Vie

      本文链接:https://www.haomeiwen.com/subject/imwozktx.html