新しいメッセージをlistviewに追加すると、自分が持っているメッセージと新しいメッセージが追加されるので、同じ情報が2回表示されます。私はFirebaseとリストビュー内の最後のメッセージを読み込みたいFirebaseの重複したオブジェクトがListViewにロードされました
、私は)(作成にフォロー機能を持っている:
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);
}
}
また、新しいメッセージを追加するために:
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("");
}
}
});
うん!!すべて準備完了 –