2017-12-28 39 views
1

강의실 공지 사항에 대한 논문 작성 중입니다.여러 firebase 디렉토리의 게시물을 모두 recyclerView에 표시합니다.

내 데이터베이스에서 다른 사용자의 게시물을 여러 범주로 분류하기로 결정했습니다.

카테고리 그래서 성공적으로 한 캘리포니아 아래에있는 모든 게시물을 표시 한 게시물

enter image description here

를 표시

enter image description here

카테고리 tegory (Class Announcements)에만 해당됩니다.

교실 공지

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(); 
} 

문제는 "교실 공지 사항"에서 유일한 발표를 표시 할 수있는 유일한 게시물이 있다는 것입니다. 어떻게

나는 가능한 한 빨리 넣어

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

또는 모든 범주 같은 것을 사용할 수 ... 등등 "청구서", "숙제", "기타", 미만 모든 공지 사항을 표시 할 수 있습니다 데이터베이스에있는 하나의 FirebaseRecyclerAdapter에 그 날짜를 사용하여 가장 최근 게시물을 맨 위에 표시 할 수 있습니까?

+0

을 = FirebaseDatabase.getInstance()의 getReference() 자녀 ("세비야의 세인트 이시") .child ("게시물"); '당신은 무엇을 얻습니까? –

+0

빈 칸 6 개가 있는데, 내 범주 여야하지만 빈 칸만 있어야합니다. – daveduya011

+0

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

답변

0

당신은 그래서 다음 코드를 사용하십시오, 두 번 getChildren()를 사용해야합니다..이`데이터베이스를 사용하는 경우

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

효과가 있었지만 실제로 작동하는 방식을 모르기 때문에 firebaseUI를 사용하지 않았습니다. 게다가 루프를 두 번 사용하는 대신 루프에 한 번만 사용했습니다. 고마워, 정말 도움이 됐어. – daveduya011