gpt4 book ai didi

Android - 使用数据绑定(bind)的条件文本值

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:02 28 4
gpt4 key购买 nike

我想有条件地将我的 TextView 的文本设置为其中之一。

Android 数据绑定(bind)文档建议,如果文本是 View 模型的属性,您可以有条件地设置文本。例如

android:text="@{user.displayName != null ? user.displayName : user.lastName}"

但是有什么方法可以设置 strings.xml 中的文本而不是将其添加到我的 View 模型中吗?我想要这样的东西-

android:text="@{viewModel.expanded ? @string/collapse : @string/expand}"

XML 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bind="http://schemas.android.com/apk/res-auto">
<data class="TravellerInfoBinding">
<import type="android.view.View" />
<variable name="viewModel" type="com.myproject.viewmodel.TravellerInfoViewModel" />

</data>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/expandable_arrow_blue" />

<TextView style="@style/primary_pair_element_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.expanded ? @string/taxes_fees_detail : @string/hide_taxes_fees_detail}"
android:textSize="12sp" />

</LinearLayout>
</layout>

这是我的 View 模型-

package com.myproject.viewmodel;

imports...

public class TravellerInfoViewModel extends BaseObservable {

@Bindable
private final TaxDetailsViewModel taxDetailsViewModel;

@Bindable
private boolean expanded;

Constructor....

public boolean isExpanded() {
return expanded;
}

public void setExpanded(boolean expanded) {
this.expanded = expanded;
notifyPropertyChanged(BR.expanded);
}

public void toggleExpanded() {
setExpanded(!expanded);
}

}

最佳答案

实际上,这对我来说很好

<TextView
android:id="@+id/btnEdit"
style="@style/Common.Toolbar.Action.Text"
android:onClickListener="@{onEditClick}"
android:text="@{vm.editMode ? @string/contacts_done : @string/contacts_edit}"
tools:text="@string/contacts_edit"/>

vm - 它是一个 ViewModel 而 editMode - 它是 ObservableBoolean

关于Android - 使用数据绑定(bind)的条件文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37725927/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com