我是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);

10-08 01:06