2016-11-01 4 views
1

나는 Android에 익숙하지 않고 RecyclerView과 같은 개념을 이해하기 시작했습니다. Firebase를 데이터베이스로 사용하고 있으므로 Firebase 솔루션을 구현했습니다.FirebaseRecyclerAdapter의 필터 결과

내 어댑터 :

FirebaseRecyclerAdapter<Offer,OfferViewHolder> adapter = new FirebaseRecyclerAdapter<Offer, OfferViewHolder>(
      Offer.class, 
      R.layout.card_item, 
      OfferViewHolder.class, 
      mDatabaseReference.child("offer").getRef() 
    ) { 
     @Override 
     protected void populateViewHolder(OfferViewHolder viewHolder, Offer model, int position) { 
      if(tvNoMovies.getVisibility()== View.VISIBLE){ 
       tvNoMovies.setVisibility(View.GONE); 
      } 

      viewHolder.tvHeading.setText(model.getHeader()); 
      viewHolder.tvStoreName.setText(model.getStoreName()); 

     } 
    }; 

지금 나는 두 가지 질문이 있습니다

  1. 는 어댑터 내부 결과를 필터링 할 수 있는가 또는 내가 그것에 대해 ChildEventListeners를 사용해야합니까?
  2. 배열이나 개체 자체가 포함 된 키를 참조 할 때 자식 값을 검색하는 방법은 무엇입니까?

답변

2

당신이 중 하나 DatabaseReference 또는 QueryFirebaseRecyclerAdapter을 초기화 할 수 있습니다. 이름에서 알 수 있듯이 후자는 데이터베이스의 특정 위치에서 하위 집합을 가져올 수 있습니다. 예를 들어

경우에만 특정 상점에서 이벤트를 표시 할 경우 말 :

DatabaseReference offers = mDatabaseReference.child("offer").getRef(); 
Query storeOffers = offers.orderByChild("storeName").equalTo("A. lazzi's store"); 
FirebaseRecyclerAdapter<Offer,OfferViewHolder> adapter = new FirebaseRecyclerAdapter<Offer, OfferViewHolder>(
     Offer.class, 
     R.layout.card_item, 
     OfferViewHolder.class, 
     storeOffers 
) { 
+0

가 이미 쿼리 기능을 사용합니다. 내가 달성하기를 원하는 것은 "도시 선택"과 "카테고리 선택"입니다. 나는 더 많은 데이터를 필요로한다는 것을 알고 있지만 피할 수있는 좋은 해결책은 없다고 생각합니다. –

+0

Firebase 쿼리는 단일 속성으로 만 필터링 할 수 있습니다. http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –

+0

고마워. 지금 저는 childListener를 사용하여 이벤트에서 결과를 필터링하고 있습니다 ... 나는 당신의 신경에 착수하기 전에 udacity firebase course를 할 것입니다 : D. –