1

AndroidアプリケーションでFirebaseから特定のデータを取得しようとしています。 onCreateで 私はDatabaseReferenceとのArrayListを定義します。その後、addValueEventListenerでクエリを使用する

databaseRef = FirebaseDatabase.getInstance().getReference("books"); 
books = new ArrayList<>(); 

とデータと私のListViewを埋めるために:

@Override 
protected void onStart() { 
    super.onStart(); 
    databaseRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) {     
      books.clear(); 
      FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
      String uid = user.getUid(); 
      //iterating through all the nodes 
      for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
       Book bookrequest = postSnapshot.getValue(Book.class); 
       books.add(bookrequest); 
       } 
      } 
      BooksListing booksAdapter = new BooksListing(MainActivity.this, books); 
      //attaching adapter to the listview 
      listViewBooks.setAdapter(booksAdapter); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 

今、私は私を持っているFirebaseから本を取得したいと思い自分のUID。

type books { 
    id: String; 
    amount: Number; 
    uid: uid;} 

データをAndroidデバイスに転送する前にクエリを実装できますか。

答えて

2

これを試してみてください:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
String uid = user.getUid(); 

databaseRef.orderByChild("uid").equalTo(uid) 
    .addValueEventListener(new ... { 
     ... onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
       // here will only contain books that have 
       // uid equal to your user uid 
      } 
      ... 
     } 
     ... 
    }); 

希望、これは私の問題を解決し

+1

おかげで、役立ちます! – Timitrov

関連する問題