2017-07-31 7 views
0

enter image description hereFirebaseのデータ検索はシングルチルドレンで行います

ここは私のfirebaseデータ構造です。子「タグ」はルートの子です。

final Query searchquery = mDatabase.child("Tags").orderByKey().limitToFirst(10).startAt(s.toString().toLowerCase()).endAt(s.toString().toLowerCase() + "\uf8ff"); 
searchquery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     try { 
      String u = dataSnapshot.child("article_name").getValue(String.class); 
     Toast.makeText(MainActivity.this,":/ : "+u.toString(),Toast.LENGTH_LONG).show(); 
     }catch (Exception tg){ 
      Toast.makeText(MainActivity.this,tg.toString(),Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

子「article_name」の値を取得します。上記のコードを使用しました。しかし、nullを返しています。

答えて

0

このコードを使用してください:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference tagsRef = rootRef.child("Tags"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String article_name = ds.child("article_name").getValue(String.class); 
      Log.d("TAG", tagsRef); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
tagsRef.addListenerForSingleValueEvent(eventListener); 

出力は次のようになります。

Blood Circulation 
Dummy Article 

も空白が含まれていないキーの名前を使用することを忘れないでください。あなたは変更する必要があります blood_circulationまたはbloodCirculation

+1

ループが必要な理由:Firebaseデータベースに対してクエリを実行すると、結果が複数ある可能性があります。したがって、スナップショットにはそれらの結果のリストが含まれています。結果が1つだけの場合でも、スナップショットには1つの結果のリストが含まれます。 –

関連する問題