热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何从Firebase读取并在评级栏中显示

我有一个评级栏,该栏应根据登录的用户显示各个用户的平均评级。用户可以通

我有一个评级栏,该栏应根据登录的用户显示各个用户的平均评级。用户可以通过写入评级节点下的数据库来对另一个用户进行评级,如下所示

如何从Firebase读取并在评级栏中显示

>

已被评级的用户位于节点“ ratee”下。请注意,“-LxW7A ......”是随机生成的密钥。
为了查看用户的评分(如果他被多次评分),我使用下面的代码获取评分的总和,然后除以该用户获得评分的总次数即可得出平均值

FirebaseUser user=mAuth.getcurrentUser();
String userId=user.getUid();
DatabaseReference refund =
FirebaseDatabase.getInstance().getReference("ratings");
Query query=refund.orderByChild("ratee").equalTo(userID);
final RatingBar ratingBar=(RatingBar)findViewById(R.id.ratingBar) ;
query.addValueEventListener(new ValueEventListener() {
int count=0;
@Override
public void onDataChange(@NonNull Datasnapshot datasnapshot) {
String rating=datasnapshot.child("rater").getvalue(String.class);
if (rating==null){Toast.makeText(getapplicationContext(),"empty ",Toast.LENGTH_SHORT).show();}else{
count=count+Integer.valueOf(rating);
double a = datasnapshot.child("kutaPoints").getvalue(double.class);
totalpointsused =+ a;
double tots=(double)count;
double result=totalpointsused/tots;
float abc=(float)result;
Toast.makeText(getapplicationContext(),""+abc,Toast.LENGTH_SHORT).show();
ratingBar.setRating(abc);
}}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});

但是,上面的代码不起作用,并且等级栏中未显示任何内容,并且显示了吐司空。


使用以下查询时:

https://dialogflow.googleapis.com/v2/projects/projectId/agent?key=[YOUR_API_KEY]

这意味着您在Query query=refund.orderByChild("ratee").equalTo(userID);
方法中作为参数获取的DataSnapshot对象包含一个结果列表。即使有一个结果,如您在屏幕快照中所见,列表也将包含一个元素。因此,在讨论列表时,要获取元素,我们需要遍历列表。因此,请检查以下代码行:

onDataChange()

假设所有4个用户的ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long count = 0;
for(DataSnapshot ds : dataSnapshot.getChildren()) {
long ratingg = ds.child("ratingg").getValue(Long.class);
count = count + ratingg;
}
long avarage = count / dataSnapshot.getChildrenCount();
Log.d("TAG","avarage: " + avarage);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG,databaseError.getMessage()); //Don't ignore errors!
}
};
query.addListenerForSingleValueEvent(valueEventListener);
属性值都设置为ratingg,则日志中的结果将是:

4

推荐阅读
author-avatar
周茜闹心_325
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有