如何使用数据绑定更改按钮的文本
How to change the text of a button using databinding
这应该很简单,但我 运行 遇到了问题。我正在尝试根据列表是降序还是升序来更改按钮的文本。这就是我所拥有的:
In my view model:
fun ascendingDescending() {
if (ascendingOrDescending == AscendDescend.ASC) {
ascendingOrDescending = AscendDescend.DESC
isAscend = false
} else {
ascendingOrDescending = AscendDescend.ASC
isAscend = true
}
val searchAndSort = searchQuery.value
searchAndSort?.ascendDescend = ascendingOrDescending
searchQuery.postValue(searchAndSort)
}
In my .xml file:
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAscendDescend"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp"
android:backgroundTint="@color/colorPrimary"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintEnd_toStartOf="@+id/btnFilterBy"
app:layout_constraintStart_toEndOf="@+id/btnSortBy"
app:layout_constraintTop_toBottomOf="@+id/guideline"
app:layout_constraintHorizontal_chainStyle="spread"
android:text="@{viewModel.isAscend ? @string/work_packages_descend : @string/work_packages_ascend}"
android:onClick="@{() -> viewModel.ascendingDescending()}"
/>
当我单击按钮时,文本没有从降序变为升序。
能否在创建绑定后添加 binding.lifecycleOwner = this
。
并使 sur 将 isAscend
设为 MutableLiveData。
在xml文件中
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnLogin"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text='@={loginViewModel.loginText}' />
在视图模型中
var loginText = ObservableField("Login")
if(phoneNumber.length>1){
loginText.set(context.getString(R.string.getOtp))
}
else{
loginText.set(context.getString(R.string.login))
}
创建绑定后,为片段中的双向绑定初始化 lifecycleOwner 和 viewModel。
binding.lifecycleOwner = viewLifecycleOwner
binding.viewModel = viewModel
假设您当然已经在 gradle 文件中设置了正确的属性。
这应该很简单,但我 运行 遇到了问题。我正在尝试根据列表是降序还是升序来更改按钮的文本。这就是我所拥有的:
In my view model:
fun ascendingDescending() {
if (ascendingOrDescending == AscendDescend.ASC) {
ascendingOrDescending = AscendDescend.DESC
isAscend = false
} else {
ascendingOrDescending = AscendDescend.ASC
isAscend = true
}
val searchAndSort = searchQuery.value
searchAndSort?.ascendDescend = ascendingOrDescending
searchQuery.postValue(searchAndSort)
}
In my .xml file:
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAscendDescend"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp"
android:backgroundTint="@color/colorPrimary"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintEnd_toStartOf="@+id/btnFilterBy"
app:layout_constraintStart_toEndOf="@+id/btnSortBy"
app:layout_constraintTop_toBottomOf="@+id/guideline"
app:layout_constraintHorizontal_chainStyle="spread"
android:text="@{viewModel.isAscend ? @string/work_packages_descend : @string/work_packages_ascend}"
android:onClick="@{() -> viewModel.ascendingDescending()}"
/>
当我单击按钮时,文本没有从降序变为升序。
能否在创建绑定后添加 binding.lifecycleOwner = this
。
并使 sur 将 isAscend
设为 MutableLiveData。
在xml文件中
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnLogin"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text='@={loginViewModel.loginText}' />
在视图模型中
var loginText = ObservableField("Login")
if(phoneNumber.length>1){
loginText.set(context.getString(R.string.getOtp))
}
else{
loginText.set(context.getString(R.string.login))
}
创建绑定后,为片段中的双向绑定初始化 lifecycleOwner 和 viewModel。
binding.lifecycleOwner = viewLifecycleOwner
binding.viewModel = viewModel
假设您当然已经在 gradle 文件中设置了正确的属性。