2017-06-30 18 views
0

私は簡単なチャットアプリケーションを開発しており、このチュートリアルhttps://youtu.be/IHHLyeak46Eに従ってこのチャットを作成しています。しかし、私は私のdataSnapshotの問題に直面しています。私は2つの携帯電話にアプリを配備しました。しかし、Datasnapshotがデータベース内の変更を検出すると、リストビューはで更新されません。私の最近のチャットだけでなく、すでにチャット中の以前のメッセージと一緒にメッセージが重複してしまいます。チュートリアルでは、正常に動作しました。 foreachループが原因であるかどうかはわかりません。なぜこうなった?DataSnapshot in Firebase - Xamarin

public void OnDataChange(DataSnapshot snapshot) 
      { 


       var items = snapshot.Child("key")?.Child("users id")?.Children?.ToEnumerable<DataSnapshot>(); 

       HashMap map; 
       foreach(DataSnapshot item in items){ 

       map = (HashMap)item.Value; 
        allMessages.Add(new EventMessageContent(map.Get("username")?.ToString(), map.Get("content")?.ToString())); 
       } 

       CommentViewAdapter adapter = new CommentViewAdapter(this, allMessages); 
       allMessages.Adapter = adapter; 

       } 

答えて

0

更新するたびにリストをクリアする必要があります。

public void OnDataChange(DataSnapshot snapshot) 
      { 
       allMessages.clear(); 

       var items = snapshot.Child("key")?.Child("users id")?.Children?.ToEnumerable<DataSnapshot>(); 

       HashMap map; 
       foreach(DataSnapshot item in items){ 

       map = (HashMap)item.Value; 
        allMessages.Add(new EventMessageContent(map.Get("username")?.ToString(), map.Get("content")?.ToString())); 
       } 

       CommentViewAdapter adapter = new CommentViewAdapter(this, allMessages); 
       allMessages.Adapter = adapter; 

       } 
関連する問題