• Kotlin中使用ViewBinding绑定控件并添加点击事件


    效果

    在这里插入图片描述
    实现源码

    class MainActivity : AppCompatActivity() {
        lateinit var binding:ActivityMainBinding
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            //setContentView(R.layout.activity_main)
            binding = ActivityMainBinding.inflate(layoutInflater)
            setContentView(binding.root)
            binding.button.text = "Hello"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    1、加入依赖

    在app 的 build.gradle 文件下的 android 标签下加入下面的代码
    可以在Java / Kotlin语言中均可以使用,配置:

    android {
    	.......
       buildFeatures {
            viewBinding true
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    只在Kotlin语言版本中配置:

       android {
            ...
            viewBinding {
                enabled = true
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、与控件进行绑定

    以下演示一个按钮绑定
    xml文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        
        <Button
            android:id="@+id/exitButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="退出软件" />
    
    </LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在 Activity 中使用视图绑定

    如需设置绑定类的实例以供 Activity 使用,请在 Activity 的 onCreate() 方法中执行以下步骤:

    1. 在Kotlin代码中使用ViewBinding.inflate方法获取绑定对象,并使用该对象访问布局文件中的控件
    2. setContentView(binding.root) 设置布局文件
    class MainActivity : AppCompatActivity() {
        lateinit var binding:ActivityMainBinding
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
        //    setContentView(R.layout.activity_main)
            binding = ActivityMainBinding.inflate(layoutInflater)
            setContentView(binding.root)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、监听控件

    使用setOnClickListener方法为控件添加点击事件

    class MainActivity : AppCompatActivity() {
        lateinit var binding:ActivityMainBinding
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
        //    setContentView(R.layout.activity_main)
            binding = ActivityMainBinding.inflate(layoutInflater)
            setContentView(binding.root)
    
            binding.exitButton.setOnClickListener {
                // 点击事件处理逻辑
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    比如:
    点击一次按钮就会打印一次“点击了按钮”

    class MainActivity : AppCompatActivity() {
        lateinit var binding:ActivityMainBinding
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            //setContentView(R.layout.activity_main)
            binding = ActivityMainBinding.inflate(layoutInflater)
            setContentView(binding.root)
            binding.button.setOnClickListener{
                Log.e("MainActivity","点击了按钮")
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

  • 相关阅读:
    java毕业设计面向对象程序设计课程网站源码+lw文档+mybatis+系统+mysql数据库+调试
    快让Live2D小可爱住进你的网站吧
    【查找算法】二分查找(C# + 递归、非递归和变种形式)
    互联网应用主流框架整合之Spring Boot运维体系
    RFID汽车制造工业系统解决方案
    测试十大法则
    docker部署-Linux
    Springboot属性注入
    Hive数据库动态分区和静态分区插入区别
    9.7黄金是否会继续下跌?后市如何布局
  • 原文地址:https://blog.csdn.net/weixin_74239923/article/details/134038139