繁体   English   中英

从 firebase 数据库中检索 ratingbar 数据以显示在帖子中

[英]Retrieve ratingbar data from firebase database to display in a post

提示:本站提供中英文对照查看,鼠标放在中文字句上可显示英文原文。 若本文未解决您的问题,推荐您尝试使用帮您解决。

我在检索 firebase 数据库数据时遇到了几个问题:

  1. 我正在尝试检索 ratingbar 数据并将其显示为 recyclerview 中的评论帖子。 将所有数据发送到数据库没有问题,但检索评级栏会返回一个空的评级栏星。

  2. 我的文本也不会显示为用户输入的文本,它以空格返回,auth.getUid() 返回键值(类似于:HUIDBUWFjnzipqE68HFJBF),而不是用户名。

  3. 我的评论图片也是空白的。

可能是什么问题? 我似乎找不到解决方案。 帮助表示赞赏!

代码片段:写评论活动: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.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM