2017-01-21 11 views
0

私はチャットアプリを作っています。私はチャット機能を成功させました。今、私は重複したユーザー名を防止したい。だから私はDatasnapshotキーの子要素が必要です。Firebaseのリアルタイムデータベースの子要素を取り出す方法

My Firebaseの構造。 enter image description here

は私が主な活動でFirebaseデシベルを定義した:

FirebaseDatabase db; 

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()のonCreate

に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

あなたの活動にDatabaseReferenceを作成し、メッセージ

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?noredirect=1#comment70807915_41808804 ありがとうございました... –

0

としてMessageクラス

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

    // Add getters and setters 
} 

取得値を作成します。

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(); 
}}); 
関連する問題