
[英]Firebase how to properly retrieve data and display data from the database
[英]Retrieve ratingbar data from firebase database to display in a post
我在检索 firebase 数据库数据时遇到了几个问题:
我正在尝试检索 ratingbar 数据并将其显示为 recyclerview 中的评论帖子。 将所有数据发送到数据库没有问题,但检索评级栏会返回一个空的评级栏星。
我的文本也不会显示为用户输入的文本,它以空格返回,auth.getUid() 返回键值(类似于:HUIDBUWFjnzipqE68HFJBF),而不是用户名。
我的评论图片也是空白的。
可能是什么问题? 我似乎找不到解决方案。 帮助表示赞赏!
代码片段:写评论活动:Review newReview = new Review(uid, author, categories, location, district, businessName, reviewData, addressData, starsData, sd);
Map<String, Object> reviewValues = newReview.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/reviews/" + key, reviewValues);
childUpdates.put("/user-reviews/" + author + "/" + key, reviewValues);
reference.updateChildren(childUpdates);
reference.keepSynced(true);
reviewImage.setImageResource(R.drawable.ic_photo);
审查意见持有人:
public void bindToReview(Review review, View.OnClickListener starClickListener) {
author.setText(review.author);
categories.setText(review.categories);
buss_name.setText(review.businessName);
buss_address.setText(review.addressData);
location.setText(review.location);
district.setText(review.district);
reviewData.setText(review.reviewData);
date.setText(review.date);
likeCount.setText(String.valueOf(review.likeCount));
starsData.setRating(stars);
likes.setOnClickListener(starClickListener);
}
审查适配器:
@SuppressLint("CheckResult")
@Override
public void onBindViewHolder(@NonNull ReviewAdapter.ViewHolder holder, int position) {
holder.uid.setText(reviewsList.get(position).uid);
holder.categories.setText(reviewsList.get(position).categories);
holder.author.setText(reviewsList.get(position).author);
holder.businessName.setText(reviewsList.get(position).businessName);
holder.address.setText(reviewsList.get(position).addressData);
holder.reviewData.setText(reviewsList.get(position).reviewData);
holder.likes.setText(String.valueOf(reviewsList.get(position).likeCount));
holder.date.setText(reviewsList.get(position).date);
holder.stars.setText(String.valueOf(reviewsList.get(position).starsData));
final RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.image_placeholder);
Glide.with(mContext).applyDefaultRequestOptions(requestOptions)
.load(reviewsList.get(position).image).into(holder.reviewImage);
}
我在那里注释掉了星星线,因为我真的不知道如何从评级栏获得价值。
添加评分:
stars = findViewById(R.id.rating);
stars.setOnRatingBarChangeListener((ratingBar, rating, fromUser) -> {
if (fromUser) reference.child("rating").setValue(rating);
});
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
rating = Float.parseFloat(String.valueOf(dataSnapshot.getValue()));
stars.setRating(rating);
}
}
@Override
public void onCancelled(@NotNull DatabaseError databaseError) { }
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.