2017-01-21 2 views
0

Я делаю чат-приложение, я успешно выполнил функцию чата. Теперь я хочу предотвратить дублирование имени пользователя. Поэтому мне нужен дочерний элемент ключа Datasnapshot.Как восстановить дочерний элемент базы данных реального времени для Firebase

My Firebase structure. enter image description here

Я определил Firebase дб в основной деятельности:

FirebaseDatabase db; 

в OnCreate

db=FirebaseDatabase.getInstance(); 

DatabaseReference dbref = db.getReference("Slitherio 1"); 
dbref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Iterable<DataSnapshot> keys = dataSnapshot.getChildren(); 
     for(DataSnapshot key :keys){ 

      Log.d("key",key.getValue().toString()); 

     } 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

key.getValue().toString() приносит Msg и имя пар.

01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=hey, name=admin} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=hello, name=SlitherP} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=h, name=harry} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=d, name=harry} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=s, name=s} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=d, name=d} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=d, name=d} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=selam, name=s} 
01-21 19:18:57.168 15747-15747/gc.guideforslitherionohacknocheats D/key: {msg=ms, name=n} 

Но я хочу, чтобы принести только имя детских элементов. Как получить имя детей элементы?

ответ

1

Создать класс сообщений

public class Message { 
    private String msg; 
    private String name; 

    // Add getters and setters 
} 

Получить значение, как сообщение

Message message = key.getValue(Message.class); 
Log.d("key", message.getName()); 
+0

Спасибо, это работает. просто отредактируйте message.getName() :) –

+1

Ха-ха, удачи! –

+0

Можете ли вы ответить на этот вопрос? http://stackoverflow.com/questions/41808804/how-to-prevent-duplicated-uname-of-users-firebase?noredirect1_comment70807915_41808804 Спасибо ... –

0

Создать DatabaseReference в своей деятельности:

DatabaseReference yourDBRef = FirebaseDatabase.getInstance().getReference("ChildName"); 
//If you have more than one child in your firebase database. 
DatabaseReference refwithinref = yourDBRef.child("ChildName1"); 

yourDBRef.addValueEventListener(new ValueEventListener(){ 
@Override 
public void onDataChange(DataSnapShot datasnapshot){ 
     String sample = datasnapshot.getValue(String.class); 
     //Print the value of the child. 
     Toast.makeText(getApplicationContext(),""+sample,Toast.LENGTH_SHORT).show(); 
}}); 
Смежные вопросы