2017-08-11 1 views
0

Je souhaite que mon affichage de la carte affiche displayTitle et reviewDetails depuis ma base de données Firebase. Comment dois-je faire cela? Je pensais à ajouter ce codeAjout de données enfant de la base de données firebase à cardview à l'aide de firebaseui

'.child(userID).child("Reviews").child("reviewTitle")' et '.child(userID).child("Reviews").child("reviewDetails")'

Mais je ne sais pas comment l'ajouter à mon code (je me sers firebaseui). Ma vue de carte affiche actuellement un blanc. Ou s'il y a un autre code que je devrais utiliser, s'il vous plaît faites le moi savoir.

Voici comment ma base de données firebase ressemble actuellement: here

Et voici mon code:

Mon Fragment

public class MyReviews extends Fragment { 

    private RecyclerView rv; 
    private FirebaseAuth firebaseAuth; 
    private DatabaseReference mDatabase; 

    LinearLayoutManager nwlinearLayoutManager; 

    private FirebaseRecyclerAdapter<ReviewInformation, ReviewsHolder> mFirebaseAdapter; 

    public MyReviews() { 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_my_reviews, container, false); 

     rv = rootView.findViewById(R.id.rv_recycler_view); 
     rv.setHasFixedSize(true); 
     nwlinearLayoutManager = new LinearLayoutManager(getActivity()); 
     nwlinearLayoutManager.setStackFromEnd(true); 


     firebaseAuth = FirebaseAuth.getInstance(); 
     FirebaseUser user = firebaseAuth.getCurrentUser(); 
     String userID = user.getUid(); 
     mDatabase = FirebaseDatabase.getInstance().getReference(); 
     Log.i("value1: ", mDatabase.toString()); 

     mFirebaseAdapter = new FirebaseRecyclerAdapter<ReviewInformation, ReviewsHolder>(
       ReviewInformation.class, 
       R.layout.card_item, 
       ReviewsHolder.class, 
       mDatabase) { 
      @Override 
      public void populateViewHolder(ReviewsHolder holder, ReviewInformation chat, int position) { 
       holder.reviewTitle.setText(chat.getReviewTitle()); 
       holder.reviewDetails.setText(chat.getReviewDetails()); 
      } 
     }; 

     mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver(){ 
      @Override 
      public void onItemRangeInserted(int positionStart, int itemCount){ 
       super.onItemRangeInserted(positionStart, itemCount); 
       int newsCount = mFirebaseAdapter.getItemCount(); 
       int lastVisiblePosition = nwlinearLayoutManager.findLastVisibleItemPosition(); 
       if(lastVisiblePosition == -1 || (positionStart>= (newsCount -1) && lastVisiblePosition == (positionStart -1))){ 
        rv.scrollToPosition(positionStart); 
       } 
      } 
     }); 
     rv.setLayoutManager(nwlinearLayoutManager); 
     rv.setAdapter(mFirebaseAdapter); 
     mFirebaseAdapter.notifyDataSetChanged(); 


     return rootView; 
    } 

    public static class ReviewsHolder extends RecyclerView.ViewHolder { 

     public TextView reviewTitle; 
     public TextView reviewDetails; 
     ImageView img; 
     public ReviewsHolder(View itemView) { 
      super(itemView); 

      this.reviewTitle= itemView.findViewById(R.id.tv_text); 
      this.reviewDetails= itemView.findViewById(R.id.tv_blah); 
      //img= itemView.findViewById(R.id.beachImage); 


     } 
    } 
} 

Mes données

public class ReviewInformation { 

    public String reviewTitle; 
    public String reviewDetails; 

    public ReviewInformation() { 

    } 

    public ReviewInformation(String reviewTitle, String reviewDetails) { 
     this.reviewTitle = reviewTitle; 
     this.reviewDetails = reviewDetails; 
    } 

    public String getReviewTitle() { 
     return reviewTitle; 
    } 

    public void setReviewTitle(String reviewTitle) { 
     this.reviewTitle = reviewTitle; 
    } 

    public String getReviewDetails() { 
     return reviewDetails; 
    } 

    public void setReviewDetails(String reviewDetails) { 
     this.reviewDetails = reviewDetails; 
    } 
} 

Répondre

0

vous avez faire référence à l'enfant

mDatabase = FirebaseDatabase.getInstance().getReference().child("Reviews"); 

Espérons que cela fonctionne

+0

Ce ne fonctionne pas. En fait, cela fait que ma vue de carte entière n'apparaît pas du tout – ben

+0

hey @Nithin Paul, j'ai fait mDatabase = FirebaseDatabase.getInstance(). GetReference(). Child ("Entreprise"). Child (ID utilisateur); à la place et ça marche. sauf maintenant un cardview vide vient avec, ce que je ne veux pas. Des idées pour s'en débarrasser? – ben