Chcę ustawić tekst mojego warunku tekstowego warunkowo na jeden lub drugi.Android - Wartość warunkowa tekstu przy użyciu powiązania danych
Dokumentacja powiązania danych Androida sugeruje, że można ustawić tekst warunkowo, jeśli tekst jest właściwością modelu widoku. na przykład
android:text="@{user.displayName != null ? user.displayName : user.lastName}"
Ale czy istnieje sposób, aby ustawić tekst z pliku strings.xml zamiast dodawać go w moim modelu widoku? Chcę coś jak to-
android:text="@{viewModel.expanded ? @string/collapse : @string/expand}"
XML wygląda nieco jak poniżej:
<?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>
I to jest moim zdaniem Model-
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);
}
}
Myślałem, że składnia działała. Jakie problemy napotykasz? – CommonsWare
To prawda, czy masz jakiś błąd? –
@CommonsWare Uzyskiwanie tego błędu kompilacji 'Błąd: Identyfikatory muszą mieć typy zdefiniowane przez użytkownika z pliku XML. viewModel brakuje go ' – Rajkiran