ViewBind的使用

ViewBind的使用

什么是ViewBind?

1.ViewBind是findViewById的替代品

2.是谷歌推荐的趋势

注意点:

  1. 以前 kotlin默认引入插件 kotlin-android-extensions
  2. Kotlin 1.4.20 去掉了这个插件,改用ViewBind替代
弃用期随着 Kotlin 1.4.20 的发布正式开始。android-kotlin-extensions 将继续保留至少一年时间,但在 2021 年 9 月或之后的 Kotlin 版本中将被移除。

kotlin-android-extensions

kotlin-android-extensions这个插件使用起来十分的简单
只需要直接使用id就能获取视图对象

Activity Bind

class MainActivity : AppCompatActivity() {
    //绑定视图对象是视图根据 Layout 自动生成的对象
    //绑定视图的命名是 layout名驼峰 + Binding
    //全局声明 绑定视图对象
    private lateinit var mainBinding: ActivityMainBinding
  
    override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       //初始化 绑定视图对象
       mainBinding=ActivityMainBinding.inflate(layoutInflater)
       //利用绑定视图 获取根视图作为activity的界面
       setContentView(mainBinding.root)
      
        mainBinding.btnSendGb.setOnClickListener{
            //利用绑定视图 获取指定id视图,并且监听事件
    }
}

Fragment Bind

    private var _binding: ResultProfileBinding? = null
    // This property is only valid between onCreateView and
    // onDestroyView.
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // 初始化 绑定视图对象
        _binding = ResultProfileBinding.inflate(inflater, container, false)
        // 返回根视图
        val view = binding.root
        return view
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }

自定义控件 Bind

class TitleLayout(context:Context,attr:AttributeSet) : LinearLayout(context,attr) {
  init{
    // 载入 R.layout.title_layout 并返回 view
        val view = LayoutInflater
               .from(context)
               .inflate(R.layout.title_layout,this)
    // 通过 bind(view) 静态方法 创建绑定类
          val titleLayoutBinding =  TitleLayoutBinding.bind(view)
   }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容