2016-12-14 8 views
0

私のAndroidアプリケーションのデータベースをレルムからFirebaseに切り替えました。 データベース参照をフィルタリングし、FirebaseRecyclerAdapter内で使用することは可能ですか?ここではいくつかの例RecyclerviewAdapterでフィルタリングされたデータベース参照を使用する

DatabaseReference adapterRef = someReference.orderByChild("country").equalTo("Test").getRef(); 
     MyAdapter adapter = new MyAdapter(this, adapterRef); 

私のリサイクルビュー内のすべてのデータは、フィルタリングが機能していないことを意味し、示されています。私は次の操作を行う一方:

someReference.orderByChild("country").equalTo("test").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
        Log.v(TAG, "Value"+snapshot); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       Log.w(TAG, "loadPost:onCancelled", databaseError.toException()); 
      } 
     }); 

私はフィルタリングが機能していると国との唯一の項目は、「テスト」が表示されているために等しいことをはっきりと見ることができます。

答えて

0

あなたがここに構築されたクエリを無視して、その後、クエリを構築している:

DatabaseReference adapterRef = someReference 
    .orderByChild("country").equalTo("Test") // here you have a query 
    .getRef(); // here you get back the same location as someReference 

適切な呪文をアダプタにしてクエリを渡すことです:

Query query = someReference.orderByChild("country").equalTo("Test"); 
MyAdapter adapter = new MyAdapter(this, query); 

あなたがする必要があるかもしれませんMyAdapterコンストラクタを変更してDatabaseReferenceの代わりにQueryをコンパイルすることができます。

+0

こんにちはフランク。私は 'FirebaseRecyclerAdapter'を使用していますが、' DatabaseReference'が必要です。 – edmond

+1

私が書いたものもクエリを受け入れます。 https://github.com/firebase/FirebaseUI-Android/blob/master/database/src/main/java/com/firebase/ui/database/FirebaseRecyclerAdapter.java#L127を参照してください。別のアダプターをベースとして使用している場合は、そのリンクを提供してください。 –

+0

こんにちはフランク。素晴らしい答え。 DatabaseReferenceは実際にはQueryのサブクラスです。私は最初に気付かなかった。 – edmond

関連する問題