2016-09-12 1 views
0

이 같은 내 POJO에서의 HashMap이있다. 그러나 변수를 추가하고 제거하는 경우에만 뷰의 변경 사항이 트리거되지 않습니다.2 웨이 HashMap의 요소에 대한 데이터 바인딩

친구가 해시 맵이고 포인터가 변경되지 않기 때문에 트리거되지 않는다는 것을 알고 있습니다. 초기 호출 후 결코 setFriends으로 호출하지 않으므로 뷰를 다시 바인딩하지 않습니다.

내부 Friend 변경 사항 또는 친구 목록에서 요소를 추가하거나 삭제할 때 어떻게 변경을 트리거 할 수 있습니까?

+0

이 데이터를 listview 또는 gridview에 사용 하시겠습니까 ?? –

+0

@Chandra 목록입니다. 하지만 RecyclerView 또는 ListView는 아닙니다. – kirtan403

+0

listview 또는 gridview를 사용하고 있다면 adapter.notifyDataSetChanged();를 사용할 수 있습니다. 그것을 위해. –

답변

2

모델에 대해 추가 제거 기능을 사용하고 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); 
} 
} 
+0

간단하고 우아한! 나는 그것을 좋아! 그러나 MyPojo의 인스턴스에서 직접'notifyPropertyChanged'를 호출 할 수 있다는 것을 발견했습니다. 또는 여러 변수에 대해 notifyPropertyChanged를 호출 할 수있는 추가 메서드를 설정할 수 있습니다. – kirtan403