繁体   English   中英

如何在Firebase的分级栏中显示分级?

[英]How to display rating in ratingbar from Firebase?

如何在基于Firebase的评级栏中显示评级? 我已成功将其评级上传到Firebase。

下面的代码显示了如何将基于评分栏的评分上传到Firebase,它可以成功运行。

ratingRef.child("Rating").setValue(ratingstar);
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
        Toast.makeText(UploadReviewAndRating.this, "Stars: " + (int)rating, Toast.LENGTH_SHORT).show();
    }
});

Intent intent = new Intent(UploadReviewAndRating.this, ViewProfile.class);
startActivity(intent);

下面的代码显示了如何显示无效的评分栏。 当我运行该应用程序时,该应用程序崩溃并显示错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int java.lang.Integer.intValue()'。

ratingRef.child("Ratings").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int rating = dataSnapshot.getValue(int.class);
        ratingBar.setRating(rating);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

调用onRatingChanged() ,您需要使用ratingRef将结果保存到数据库中。

ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
        if (fromUser) ratingRef.child("Rating").setValue(rating);
    }
});

然后将侦听器附加到相同的ratingRef子级以加载评级,同时还要检查从数据库( dataSnapshot )返回的结果是否不为null

ratingRef.child("Rating").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot != null && dataSnapshot.getValue() != null) {
            float rating = Float.parseFloat(dataSnapshot.getValue().toString());
            ratingBar.setRating(rating);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) { }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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