美文网首页
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