Android 安卓&x2B;汇总解析查询的值
我有以下问题: 我想总结一下评级(Column“评级”),然后计算一个平均评级。 不幸的是,这不起作用,在我看来,问题出在foreach循环中。变量avg在循环后没有值,我看不出原因。 非常感谢你的帮助 表“RateAndComment”Android 安卓&x2B;汇总解析查询的值,android,parse-platform,Android,Parse Platform,我有以下问题: 我想总结一下评级(Column“评级”),然后计算一个平均评级。 不幸的是,这不起作用,在我看来,问题出在foreach循环中。变量avg在循环后没有值,我看不出原因。 非常感谢你的帮助 表“RateAndComment” 受保护的双重总额定值; 受保护的int i; 保护浮动平均值; 公共void(字符串objectId) { //ParseQuery=ParseQuery.getQuery(“RateAndComment”); ParseQuery=新的ParseQuery
受保护的双重总额定值;
受保护的int i;
保护浮动平均值;
公共void(字符串objectId)
{
//ParseQuery=ParseQuery.getQuery(“RateAndComment”);
ParseQuery=新的ParseQuery(“RateAndComment”);
查询:whereEqualTo(“PlaceObjectId”,objectId);
findInBackground(新的FindCallback(){
@凌驾
公共作废完成(列表,
com.parse.parse异常(e){
如果(e==null){
i=0;
用于(ParseObject对象:列表){
totalRating=totalRating+obj.getDouble(“评级”);
i=i+1;
}
}否则{
Log.d(“检索后”,“错误:+e.getMessage());
}
}
}
);
平均值=(浮动)总额定值/i;
avd(objectId);
}
传递到query中的FindCallback
的done
方法。findInBackground
将在稍后的时间点(查询完成后)执行
在计算i
之前执行。将其移动到done
方法中,您应该会很好。
在调用
avgRating
之前,调用calculating
后会有一个延迟,因此您可能应该显示一些加载UI或一些其他指示,表明后台正在发生某些事情。您熟悉术语异步
?是的,但老实说,我看不出它怎么适合这个问题。你能给我指一下正确的方向吗?你是从看医生开始的吗?(这里的关键词是背景中的
)我阅读了文档:非常感谢您的解答和解释。现在它工作正常,性能还不是问题,但我会记住这一点。当findInBackground执行网络请求时,您的最终用户在3G(或更糟)连接上使用您的应用时,可能会遇到性能问题。记住这一点总是好的。
protected double totalRating;
protected int i;
protected float avg;
public void CalculateRating(String objectId)
{
//ParseQuery<ParseObject> query = ParseQuery.getQuery("RateAndComment");
ParseQuery query = new ParseQuery("RateAndComment");
query.whereEqualTo("PlaceObjectId",objectId);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject>list,
com.parse.ParseException e) {
if (e == null) {
i=0;
for (ParseObject obj : list) {
totalRating = totalRating + obj.getDouble("Rating");
i = i + 1;
}
} else {
Log.d("Post retrieval", "Error: " + e.getMessage());
}
}
}
);
avg = (float) totalRating/i;
avgRating(objectId);
}
avg = (float) totalRating/i;
avgRating(objectId);