如果在两种情况下都启用了数据绑定,binding.name.text && name.text 之间有什么区别
What is the difference between a binding.name.text && name.text if data binding is enabled in both cases
我刚开始学习数据绑定,在理解它的技术方面遇到了一些困难
在我的以下代码中,我在应用 Gradle 文件中启用了数据绑定以便使用它并摆脱 findviewbyid() ...所以我将绑定变量创建为 lateinit在 oncreate() 函数之前,然后我在 on create fun 中初始化它,如下所示:binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
我将在我的 XML 文件中为您提供一个视图示例,以在 ...
<EditText
android:id="@+id/nickName_editText"
style="@android:style/Widget.DeviceDefault.Light.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/Margin"
android:layout_marginTop="@dimen/Margin"
android:layout_marginRight="@dimen/Margin"
android:hint="@string/hint"
android:inputType="textPersonName"
android:textAlignment="center" />
回到kotlin文件下面这两行代码有什么区别(*两行都有效)
nickName_editText.visibility = View.VISIBLE
binding.nickNameEditText.visibility = View.VISIBLE
我知道我们想要摆脱 findviewbyid() 以使应用程序更快,但为什么我们不像第一行那样做,而且我们也没有调用 findViewById()
我是 android 开发的新手,所以我可能无法理解那些复杂的答案:‑D
感谢您的帮助!
这些都是数据绑定的形式,binding.nicknameEditText是 Android 的实现,也是推荐的方法。 “nickName_editText”是 Kotlin 数据绑定并且有已知的错误问题,当您进入更复杂的视图时,它们会开始弹出。
在 MainActivity 中扩展您的导入,您会注意到以下导入。
import kotlinx.android.synthetic.main.activity_main.*
开头表示布局中所有视图的绑定。
如果您“删除 kotlinx.android.synthetic.main.activity_main.*”,您会注意到“nickName_EditText”现在未定义。
您还可以通过
查看Kotlin字节码
clicking on tools/Kotlin/show Kotlin ByteCode
如果您单击“nickName_editText”,您会注意到该部分的字节码将突出显示。
希望这能回答您的所有问题
我刚开始学习数据绑定,在理解它的技术方面遇到了一些困难
在我的以下代码中,我在应用 Gradle 文件中启用了数据绑定以便使用它并摆脱 findviewbyid() ...所以我将绑定变量创建为 lateinit在 oncreate() 函数之前,然后我在 on create fun 中初始化它,如下所示:binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
我将在我的 XML 文件中为您提供一个视图示例,以在 ...
<EditText
android:id="@+id/nickName_editText"
style="@android:style/Widget.DeviceDefault.Light.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/Margin"
android:layout_marginTop="@dimen/Margin"
android:layout_marginRight="@dimen/Margin"
android:hint="@string/hint"
android:inputType="textPersonName"
android:textAlignment="center" />
回到kotlin文件下面这两行代码有什么区别(*两行都有效)
nickName_editText.visibility = View.VISIBLE
binding.nickNameEditText.visibility = View.VISIBLE
我知道我们想要摆脱 findviewbyid() 以使应用程序更快,但为什么我们不像第一行那样做,而且我们也没有调用 findViewById()
我是 android 开发的新手,所以我可能无法理解那些复杂的答案:‑D
感谢您的帮助!
这些都是数据绑定的形式,binding.nicknameEditText是 Android 的实现,也是推荐的方法。 “nickName_editText”是 Kotlin 数据绑定并且有已知的错误问题,当您进入更复杂的视图时,它们会开始弹出。
在 MainActivity 中扩展您的导入,您会注意到以下导入。
import kotlinx.android.synthetic.main.activity_main.*
开头表示布局中所有视图的绑定。
如果您“删除 kotlinx.android.synthetic.main.activity_main.*”,您会注意到“nickName_EditText”现在未定义。
您还可以通过
查看Kotlin字节码clicking on tools/Kotlin/show Kotlin ByteCode
如果您单击“nickName_editText”,您会注意到该部分的字节码将突出显示。
希望这能回答您的所有问题