除非使用ObservableFields,否则POJO类应扩展BaseObservable。让我们看一下我目前的POJO,它非常简单,只存储一个observableInt:
public class User {
public ObservableInt visible;
public User(int visible) {
this.visible=new ObservableInt(visible);
}
}
我想在这个pojo中添加一个Observable Collection,但是如果我这样做,我还不清楚如何布局xml。我怎么称呼它。假设我想将当前的数组映射添加到我的POJO:
ObservableArrayMap<String, Object> myCollection = new ObservableArrayMap<>();
myCollection.put("firstName", "Google");
myCollection.put("lastName", "Inc.");
myCollection.put("age", 17);
如何将其合并到我的xml中以进行数据绑定。我的xml文件很简单,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.example.android.floatingactionbuttonbasic.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="my first textview"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="my second textview"
android:visibility="@{user.visible}"/>
</LinearLayout>
</layout>
我很困惑如何将ObservableArrayMap的变量添加到此xml文件中并能够使用它。有人可以帮忙吗?我觉得我可以把它传递给用户POJO罚款,它只是来自xml我不知道我是如何引用它的?我混淆的原因是因为ObservableArrayMap将成为User类的一个属性,我如何访问它,因为它将成为User类的成员?
答案 0 :(得分:3)
您可以像使用xml中的任何其他公共可观察对象一样访问地图值。
例如:
public class Model{
public ObservableArrayMap<Integer,String> MyMap=new ObservableArrayMap<>();
public Model(){
MyMap.put(1,"easy");
}
}
从xml访问值:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="model"
type="de.example.models.Model"/>
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/padding"
android:text="@{model.MyMap.get(1)}"/>
</layout>