2016-11-22 4 views
-2

recyclerViewに表示するFirebaseクエリがありますが、この目的ではValueListener`が使用されています。ArrayList <>にFirebaseクエリをロードしてアダプタに渡す方法

私のRecyclerViewアダプタを実装するためには、ArrayListを渡す必要があります。どうすればいいですか?クエリからArrayListにアイテムを追加する方法は?

私はRecyclerView.Adapter(私のニーズを満たしていません)よりはるかに制限されているので、FirebaseRecyclerAdapterを使用したくありません。

おかげ

+0

FirebaseUIはFirebase用の 'ListAdapter'と' RecyclerAdapter'の効率的な実装を含むオープンソースライブラリです。 FirebaseRecyclerAdapterアダプタを使用したくない場合でも、独自のアダプタを構築するための基礎としてそのコードを使用できます。 –

答えて

1

だけで値を照会し、firebaseからそれを取得し、...そして、あなたがこれを探している可能性があり、照会データを移入するためのカスタムリサイクルビューを使用..

mDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      recyclerList.clear(); 
      recyclerAdapter = new RecyclerAdapter(recyclerList); 
      RecyclerAdapter.notifyDataSetChanged(); 
      for (DataSnapshot postSnapshot : snapshot.getChildren()) { 
       BTIsdDetails post = postSnapshot.getValue(BTIsdDetails.class); 
       BTIsdDetails btIsdDetails = new BTIsdDetails(post.getName(), post.getId()); 
       isdList.add(btIsdDetails); 
       BTLog.d(TAG, " -------------------------- " + post.getName()); 
      } 
      recyclerView.setHasFixedSize(true); 
      RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
      recyclerView.setLayoutManager(mLayoutManager); 
      recyclerView.setAdapter(isdAdapter); 
     } 
+0

私の質問はそれを達成する方法です – kerollos

+0

あなたの要件に基づいてデータをクエリすることができ、ガイドラインは以下のリンクにあります。https://firebase.google.com/docs/reference/android/com/google/ firebase/database/Query – raasesh

+0

申し訳ありませんが、詳細を十分に説明していない場合は、RecyclerViewアダプタを作成するためにArrayListを渡す必要があります。どのようにArrayListに項目を追加するには? – kerollos

2
FirebaseDatabase mDatabase = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = mDatabase.getReference("imageData");//image data is my json array List 

myRef.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      //this will be called for every child in your list 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
      //this will be called for every child changed in your list 
     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 

    }); 
+0

あなたの答えをありがとう、私は殺すか、リスナーを取り外す必要がありますか?私はこのメソッドを試したので、私は別の(私はビューページを使用する)タブから別のタブに移動するときに最初のタブに項目が消えたときに移動します。 PS:インターネット接続が正常に動作し、firebasePersistantは正常に動作します – kerollos

関連する問題