2017-12-28 10 views
1

Ich arbeite an unserer Diplomarbeit über die Ankündigungen im Klassenzimmer und bin dabei geblieben.Alle Posts von mehreren Firebase-Verzeichnissen in RecyclerView anzeigen

In meiner Datenbank habe ich entschieden, Beiträge verschiedener Benutzer in mehrere Kategorien zu stellen.

Kategorien

enter image description here

Kategorien Beiträge

enter image description here

Also habe ich erfolgreich die alle unter einem ca angezeigt haben Anzeige nur Tegory (Class Ankündigungen).

Klassenzimmer Ankündigungen

enter image description here

private RecyclerView postList; 

private DatabaseReference database; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    addPost = findViewById(R.id.btnAddPost); 

    database = FirebaseDatabase.getInstance().getReference().child("St Isidore of Seville") 
      .child("Posts").child("Classroom Announcements"); 

    postList = findViewById(R.id.postList); 

    postList.setLayoutManager(new LinearLayoutManager(this)); 

} 

@Override 
protected void onStart() { 
    super.onStart(); 

    FirebaseRecyclerOptions<Post> options= new FirebaseRecyclerOptions.Builder<Post>() 
      .setQuery(database, Post.class).build(); 

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(options) { 
     @Override 
     public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_row, parent, false); 

      return new PostViewHolder(view); 
     } 

     @Override 
     protected void onBindViewHolder(@NonNull PostViewHolder holder, int position, @NonNull Post model) { 
      holder.setTitle(model.getTitle()); 
      holder.setMessage(model.getMessage()); 
      holder.setDateCreated(model.getDateCreated()); 
     } 
    }; 

    postList.setAdapter(firebaseRecyclerAdapter); 

    firebaseRecyclerAdapter.startListening(); 
} 

Das Problem ist, dass nur Ankündigungen unter "Klassenzimmer-Mitteilungen" die einzigen Stellen sind, die angezeigt werden könnten. Wie kann ich alle Mitteilungen angezeigt werden, wie sie unter „Rechnungen“, „Hausaufgaben“, „Andere“, etc ...

Kann ich jede Kategorie etwas wie

database = FirebaseDatabase.getInstance().getReference().child("St Isidore of Seville") 
      .child("Posts"); 

oder so schnell wie möglich Put verwenden in der Datenbank in nur einen FirebaseRecyclerAdapter, so dass ich ihr Datum verwenden kann, um den neuesten Beitrag an der Spitze anzuzeigen?

+0

, wenn Sie diese 'Datenbank verwendet = FirebaseDatabase.getInstance() getReference() Kind ("St. Isidor von Sevilla") .child ("Posts"); 'Was bekommen Sie? –

+0

Ich bekomme leere 6 leere Felder, die meine Kategorien sein sollten, aber nur leer. – daveduya011

+0

https://drive.google.com/open?id=1FWL45AvZTO9wDkorMBQ5_XlOVU4q2LeU – daveduya011

Antwort

0

Sie müssen getChildren() zweimal verwenden, so wenden Sie sich bitte den folgenden Code verwenden:..

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference postsRef = rootRef.child("St Isidore of Seville").child("Posts"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      for(DataSnapshot child : ds.getChildren()) { 
       Post model = child.getValue(Post.class); 
       Log.d("TAG", model.getTitle() + "/" + model.getMessage() + "/" + model.getDateCreated()); 
      } 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
postsRef.addListenerForSingleValueEvent(eventListener); 
+0

Es hat funktioniert, aber ich habe FirebaseUI nicht mehr verwendet, weil ich nicht weiß, wie es wirklich funktioniert. Außerdem habe ich die for-Schleife nur einmal verwendet, anstatt sie zweimal zu verwenden. Danke, es hat mir wirklich geholfen – daveduya011

Verwandte Themen