HashMap元素的双向数据绑定

时间:2016-09-12 06:21:26

标签: android android-databinding

我的POJO中有一个HashMap,如下所示:

@Module
public FooImpl1Module {

    @Provides
    FooInterface provideFooImplementation(Context context) {
        return new FooImpl1(context);
    }
}

当我用新元素更改朋友的元素时,这可以触发重新绑定视图。但是,如果我只添加和删除class MyPojo extends BaseObservable { HashMap<String, Friend> friends; @Bindable public HashMap<String, Friend> getFriends(){ return friends; } public void setFriends(HashMap<String,Friend> newFriends){ friends=newFriends; notifyPropertyChanged(BR.friends); } } 变量中的元素,则不会触发视图中的任何更改。

我知道它没有被触发,因为朋友是一个散列图并且它的指针没有改变。我从不在初始调用后调用friends,因此它不会触发重新绑定视图。

如何在朋友列表中添加或删除内部setFriends更改或元素时触发更改?

1 个答案:

答案 0 :(得分:2)

您可以对模型使用add remove function并调用notifyPropertyChanged()来通知视图的更改。

class MyPojo extends BaseObservable {
HashMap<String, Friend> friends;

@Bindable
public HashMap<String, Friend> getFriends(){
    return friends;
}

public void setFriends(HashMap<String,Friend> newFriends){
    friends=newFriends;
    notifyPropertyChanged(BR.friends);
}

public void add(String str,Friend friend)
{
    friends.put(str,friend);
    notifyPropertyChanged(BR.friends);
}

public void remove(String str,Friend friend)
{
    friends.remove(str,friend);
    notifyPropertyChanged(BR.friends);
}
}