我已经使用了数据绑定一段时间了,即使现在它也不适用于JDK 8和API 24.我仍然找到一种以更简单的方式使用数据绑定的方法.但是当我使用以下方式进行精确的双向数据绑定时(在我看来,双向数据绑定就像这里(什么是双向绑定?),有些奇怪的事情发生了.
1.双向数据绑定(以xml为单位)
android:text="@={testStr}"
Run Code Online (Sandbox Code Playgroud)
这在官方文档中没有提到(https://developer.android.com/topic/libraries/data-binding/index.html,此页面通常会更新,现在可能会更改).但它可以将变量绑定到xml.
2. ObservableField属性
这里的示例(https://developer.android.com/topic/libraries/data-binding/index.html#observablefields)
private static class User {
public final ObservableField<String> firstName =
new ObservableField<>();
public final ObservableField<String> lastName =
new ObservableField<>();
public final ObservableInt age = new ObservableInt();
}
Run Code Online (Sandbox Code Playgroud)
3.将模型类扩展为BaseObservable
private static class User extends BaseObservable {
private String firstName;
private String lastName;
@Bindable
public String getFirstName() {
return this.firstName;
}
@Bindable
public String getLastName() {
return this.lastName;
}
public void setFirstName(String firstName) { …Run Code Online (Sandbox Code Playgroud) 我正在使用Android数据绑定库.我要求如果绑定数小于10,我需要显示一个零附加(如01,05),否则显示正常数字.
这是我布局的相关部分:
<TextView
android:id="@+id/tlm_no"
style="@style/BlackSmallTextStyle"
android:layout_width="@dimen/study_plan_icon_width"
android:layout_height="wrap_content"
android:layout_below="@id/tlm_image"
android:gravity="center"
android:fontFamily="sans-serif-light"
android:text="@{studyPlanDetailVM.studyPlanDetail.learningPlanResource[0] < 10 ? `0` + studyPlanDetailVM.studyPlanDetail.learningPlanResource[0] : studyPlanDetailVM.studyPlanDetail.learningPlanResource[0]}" />
Run Code Online (Sandbox Code Playgroud)
但是当我构建项目时,它会抛出以下错误:
The value of attribute “android:text” associated with an element type “TextView” must not contain the '<' character
我该如何解决这个问题?