2017-06-21 77 views
0

有人可以幫我使用這段代碼嗎?問題是我只接收我的數據庫中的最後一項。從Android Firebase中檢索所有的孩子到RecyclerView

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
    database.child("Ministries").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for(DataSnapshot child : dataSnapshot.getChildren()) { 

       String min = child.child("Ministry").getValue().toString(); 
       min_address = child.child("Address").getValue().toString(); 
       min_tel = child.child("Tel").getValue().toString(); 
       min_fax = child.child("Fax").getValue().toString(); 
       min_email = child.child("e_mail").getValue().toString(); 
       min_website = child.child("website").getValue().toString(); 

       final RecyclerView rv = (RecyclerView) findViewById(id.recycler_view); 
       rv.setHasFixedSize(true); 
       LinearLayoutManager llm = new LinearLayoutManager(getApplicationContext()); 
       rv.setLayoutManager(llm); 
       List<Ministries> m = new ArrayList<>(); 
       m.add(new Ministries(min, min_address, min_tel, min_fax, min_email, min_website, R.drawable.ic_ministries)); 
       RVAdapter adapter = new RVAdapter(m); 
       rv.setAdapter(adapter); 

      } 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) {} 
    }); 
+0

我沒有用過ValueEventListeners,但ChildEventListener可能更適合這裏。 –

回答

1

您需要將列表創建和RecyclerView邏輯移出for循環。

例如:

public void onDataChange(DataSnapshot dataSnapshot) { 

     List<Ministries> m = new ArrayList<>(); 

     for(DataSnapshot child : dataSnapshot.getChildren()) { 

      String min = child.child("Ministry").getValue().toString(); 
      min_address = child.child("Address").getValue().toString(); 
      min_tel = child.child("Tel").getValue().toString(); 
      min_fax = child.child("Fax").getValue().toString(); 
      min_email = child.child("e_mail").getValue().toString(); 
      min_website = child.child("website").getValue().toString(); 

      m.add(new Ministries(min, min_address, min_tel, min_fax, min_email, min_website, R.drawable.ic_ministries)); 

     } 

     final RecyclerView rv = (RecyclerView) findViewById(id.recycler_view); 
     rv.setHasFixedSize(true); 
     LinearLayoutManager llm = new LinearLayoutManager(getApplicationContext()); 
     rv.setLayoutManager(llm); 

     RVAdapter adapter = new RVAdapter(m); 
     rv.setAdapter(adapter); 

    } 
+0

夥計,你是一個救命的人......這工作 –

+0

如何實現一個clicklistener爲循環內進入的每一個信息...例如「min_tel」,指向確切的電話號碼按鈕...我的當前的嘗試也只是給我Firebase數據庫中的最後數據 –