public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_random_two);
value = getIntent().getExtras().get("value").toString();
uid = getIntent().getExtras().get("uid").toString();
btn_send_msg = (Button) findViewById(R.id.btn_send);
input_msg = (EditText) findViewById(R.id.msg_input);
chat_conversation = (TextView) findViewById(R.id.textView);
user_uid = uid;
random_chat();
btn_send_msg.setOnClickListener(new View.OnClickListener() { <- 버튼을 눌렀을때
@Override
public void onClick(View v) {
start_random_chat();
}
});
}
public void start_random_chat()
{
mDatabase = FirebaseDatabase.getInstance().getReference("random_chat");
final DatabaseReference data = mDatabase.child("uid").child("chat_room").child(random_user);
key = mDatabase.push().getKey();
Map<String,Object> map2 = new HashMap<String, Object>();
message_root = data.child(key);
map2.put("name",value); <- name과 msg가 각 각 추가됩니다. 그런데,
map2.put("msg",input_msg.getText().toString());
mDatabase.child("uid").child("chat_room").child(random_user).setValue(null);
<- (추가된 값을 바로 지워줍니다.)
message_root.updateChildren(map2);
data.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
user_chat(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
user_chat(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void user_chat(DataSnapshot dataSnapshot)
{
Iterator i = dataSnapshot.getChildren().iterator();
while(i.hasNext()) <- 이 부분에서 몇번씩 반복이됩니다.
{
Toast.makeText(this, "while문 시작", Toast.LENGTH_SHORT).show();
chat_msg = String.valueOf(((DataSnapshot)i.next()).getValue());
chat_user_name = String.valueOf(((DataSnapshot)i.next()).getValue());
chat_conversation.append(chat_user_name+":"+chat_msg+"\n");
input_msg.setText(null);
}
}
예를 들면 입력창에 "text"를 입력하면 처음에는 한번이 출력됩니다. 두 번째에는 두 번이 출력되구요
다음에는 네 번이 출력됩니다. "text"를 썼다가 만약 "naver" 를 쓰게 되면,
이런식으로 ..
name:text <-- 첫 번째
name:text <-- 두 번쨰 입력시
name:text
name:naver <--세 번째 입력시
name:naver
name:naver
name:naver
이런식으로 누적? 이 되는데, 물론 DB에는 똑같은 값이 없습니다 위에서 바로 지워주게 했거든요,
어떻게하면 해결할 수 있을까요?? 답변 부탁드립니다..!