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);
}
}
我的 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);
}
}