마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Firebase 질문!!

0 추천

 

제 db가 이런식으로 되어있는데요, 


 random_chat

- uid
   - chat_room
       -SOOK
            -KohDZxXdBw6aFVuVI-V  <- 이 부분이 push().getKey()로 자동생성된 부분인데

               - msg: msg  <- 아래 부분에 저장된 msg랑 name을 받고싶은데요 문제가 있습니다. 

               - name: name
            -KohDaCOG7ep4Q2_h9ex

 

 

아래는 소스인데요,

 

 mDatabase = FirebaseDatabase.getInstance().getReference("random_chat");
        DatabaseReference data = mDatabase.child("uid").child("chat_room").child(random_user2);

        key = mDatabase.push().getKey();

        message_root =data.child(key);

        Map<String,Object> map2 = new HashMap<String, Object>();


        map2.put("name",value);
        map2.put("msg",input_msg.getText().toString()); <-- 여기 까지는 작동이되어서 db에 저장이되는데,

 

        message_root.updateChildren(map2);

       

 

          data.child(random_user2).child(key).addChildEventListener(new ChildEventListener() {

<- 여기서 막혀서 넘어가질 않습니다. 여기서 child(key)를 빼주면 db에 저장된 모든 내용이 출력되구요, 저는 push() 밑에 msg와 name 값만 받아오고 싶은데 어떡해해야 할까요???


            @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) {

            }

 

알파고 (4,320 포인트) 님이 2017년 7월 11일 질문

1개의 답변

0 추천

아마 onChildAdded 파라미터로 들어오는 snapshot에서 snapshot을 제너릭클래스로 갖는 iterator를 리턴하는 함수가 있을거에용. 

지금 정확히 기억이 안나는데 getter로 이를 찾아서 tree 구조로 depth를 타고 들어갈수가 있습니다.

Development Guy (70,570 포인트) 님이 2017년 7월 11일 답변
...