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;
}
}
Ce ne fonctionne pas. En fait, cela fait que ma vue de carte entière n'apparaît pas du tout – ben
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