HashMap 元素的 2 向数据绑定

2-way data-binding for HashMap elements

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

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 变量中添加和删除元素,这不会触发视图中的任何更改。

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

当内部Friend发生变化或添加或删除好友列表中的元素时,如何触发变化?

您可以为模型使用添加删除功能并调用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);
}
}