包含标记的可观察字段

时间:2018-01-12 09:10:11

标签: android android-databinding

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

我如何能够在包含标记中检索此数据,因为到目前为止这种方法无效,我们非常感谢您提供帮助。

1 个答案:

答案 0 :(得分:1)

尝试添加行

binding.executePendingBindings()

之后

bindData.farmers.set(farmers);
相关问题