파이어베이스와 연동시 키보드를 내려야지면 적용이 됩니다.
조회수 488회
최초 실행시 파이어베이스와 연동하여, 띄우고 싶은 목록을 모두 가져오는 데 성공하며, 입력한 값들은 파이어베이스에 즉시 저장됩니다. 그러나 그렇게 변경된 내역이 안드로이드에 즉시 반영되지 않고, 키보드 입력창을 종료한 뒤에만 적용됩니다.
제가 생각하는 문제는 경로로 인한것인데, 경로가 잘못되어 이벤트리스너가 잘 작동하지 않았고, view가 바뀔때마다 액티비티가 재실행되서 되었다 정도입니다.
public void getFirebaseDatabase() {
final ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.d("onDataChange", "Data is Updated");
chatlists.clear();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
String key = postSnapshot.getKey();
ChatListItem get = postSnapshot.getValue(ChatListItem.class);
String[] info = {get.getNAME()};
chatlists.add(get);
Log.d("getFirebaseDatabase", "key: " + key);
Log.d("getFirebaseDatabase", "info: " + info[0]);
}
adapter = new ChatListItemAdapter(ChatListActivity.this, chatlists);
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
mPostReference.child("chatroom_list").addValueEventListener(postListener);
}
public void postFirebaseDatabase(boolean add){
Map<String, Object> childUpdates = new HashMap<>();
Map<String, Object> postValues = null;
HashMap<String, Object> result = new HashMap<>();
if(add){
ChatListItem post = new ChatListItem(chatroomname);
result.put("NAME", chatroomname);
postValues = result;
}
childUpdates.put("/chatroom_list/" + chatroomname, postValues);
mPostReference.updateChildren(childUpdates);
clearET();
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력