2017-08-11 1 views
0

Ich möchte, dass meine Kartenansicht den Titel reviewTitle und reviewDetails aus meiner Firebase-Datenbank anzeigt. Wie soll ich das machen? Ich dachte, diesen Code hinzuzufügenHinzufügen von Kinddaten aus der Firebase-Datenbank zu cardview mit Firebaseui

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

Aber ich habe keine Ahnung, wie es zu meinem Code hinzufügen (I firebaseui verwenden). Meine Kartenansicht zeigt jetzt ein leeres Feld an. Oder wenn es einen anderen Code gibt, den ich verwenden sollte, lassen Sie es mich bitte wissen. Diese

ist, wie meine Feuerbasis Datenbank zur Zeit wie folgt aussieht: here

Und dies ist mein Code:

Mein 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); 


     } 
    } 
} 

Meine Daten

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

Antwort

0

Sie haben um das Kind zu referenzieren

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

Hoffnung, das wird funktionieren

+0

Das funktioniert nicht. Tatsache ist, dass meine gesamte Kartenansicht überhaupt nicht angezeigt wird. – ben

+0

hey @Nithin Paul, ich habe mDatabase = FirebaseDatabase.getInstance(). GetReference(). Child ("Geschäftlich"). Child (userID); stattdessen und es funktioniert. außer jetzt kommt ein leerer cardview mit, was ich nicht will. Irgendwelche Ideen, wie man es loswerden kann? – ben