我是android数据绑定库的新手,我试图为我的arrayList设置Observable字段并以xml格式访问它,但是我的xml有一个include标记,我想将此数据传递给它,并且我将其设置为下面。
fragment_farmers.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="java.util.ArrayList"/>
<import type="android.view.View"/>
<variable
name="fragment"
type="****.****.com.android.Fragments.FarmersFragment"
/>
<variable
name="farmers"
type="****.****.com.android.Fragments.FarmersFragment.FarmerBindData"
/>
/>
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
layout="@layout/content_farmers"
android:id="@+id/content"
app:farmers="@{farmers}"/>
...
content_farmers.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="java.util.ArrayList"/>
<import type="android.view.View"/>
<variable
name="farmers"
type="ArrayList"
/>
</data>
FarmersFragment.java
...
FarmerBindData bindData = new FarmerBindData();
binding = DataBindingUtil.inflate(inflater,R.layout.fragment_farmers, container, false);
binding.setFragment(this);
binding.setFarmers(bindData);
binding.executePendingBindings();
...
public void getFarmers() {
try {
farmers.clear();
List<JsonObject> temp = ...;
farmers.addAll(temp);
bindData.farmers.set(farmers);
} catch (Exception e) {
}
}
private class FarmerBindData{
public final ObservableField<ArrayList<JsonObject>> farmers = new ObservableField<>();
}
...
我如何能够在include标记中检索此数据,因为到目前为止该方法仍无法正常工作,我们非常感谢您的帮助。
最佳答案
尝试添加行
binding.executePendingBindings()
后
bindData.farmers.set(farmers);