Wenn ich eine neue Nachricht zu einem Listview hinzufüge, fügt das hinzu, dass ich die Nachricht und die neue Nachricht, so dass es die gleichen Informationen zweimal.Doppelte Objekte von Firebase in ListView geladen
ich letzte Nachrichten in einer Listenansicht mit Firebase geladen werden soll, ich die Follow-Funktion in erstellen muß():
firebase = new Firebase(FIREBASE_URL).child(FIREBASE_CHILD + "/" + sharedPreferences.getString("chatKey", null).toString() + "/room/");
firebase.child("messages").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot Snapshot) {
if (Snapshot.getValue() != null) {
Iterable<DataSnapshot> iterator = Snapshot.getChildren();
itemMessage itemData;
for(DataSnapshot value : iterator){
itemData = value.getValue(itemMessage.class);
mCDataAdatapter.add(itemData.getMessage().toString());
}
mConversation.setAdapter(mCDataAdatapter);
}
}
Und für neue Nachricht hinzufügen:
sendMessage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ChatActivity.this);
SharedPreferences.Editor editor = sharedPreferences.edit();
// editor.clear().commit();
if(sharedPreferences.getString("chatKey", null) != null && sharedPreferences.getString("chatKey", null).toString() != ""){
messageLevel = new Firebase(FIREBASE_URL+sharedPreferences
.getString("chatKey", null)
.toString()+"/room/")
.child("messages");
Map<String, Object> messageData = new HashMap<String, Object>();
messageData.put("message", message.getText().toString());
messageData.put("userTo", 1);
messageData.put("userFrom",2);
messageLevel
.push()
.setValue(messageData);
mCDataAdatapter.add(message.getText().toString());
mConversation.setAdapter(mCDataAdatapter);
message.setText("");
}
}
});
Yeah !! Alles bereit –