小编qeh*_*h63的帖子

使用数据绑定的问题:val 与 var 以及使用 invalidateAll()

这实际上是2个问题。

  1. 我注意到如果在Person数据类中我将name参数设置为val而不是var. 代码将因以下错误而中断:
error: cannot find symbol
import com.example.android.aboutme.databinding.ActivityMainBindingImpl;
                                              ^
  symbol:   class ActivityMainBindingImpl
  location: package com.example.android.aboutme.databinding
Run Code Online (Sandbox Code Playgroud)

为什么会发生?

  1. 为什么我需要调用invalidateAll()doneClick()?文档说它“使所有绑定表达式无效并请求新的重新绑定以刷新 UI”。数据绑定的目的不是以更新数据立即更新视图的方式连接数据和视图吗?

主要活动:

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    val person = Person("Bob")

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        binding.person = person

        binding.apply {
            btnDone.setOnClickListener { doneClick(it) }
        }
    }

    private fun doneClick(view: View) {
        binding.apply {
            person?.nickname = etNickname.text.toString()
            invalidateAll()
            etNickname.visibility = …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-databinding

7
推荐指数
2
解决办法
2022
查看次数

标签 统计

android ×1

android-databinding ×1

kotlin ×1