我想把每个点击按钮的人的当前用户添加到类型列表的列中,这样以后我就可以得到按下按钮的人数的长度。
这是我的代码:
public void findAnswered(CloudQuery query) throws CloudException {
query.findById(questionID, new CloudObjectCallback() {
@Override
public void done(CloudObject object, CloudException e) throws CloudException {
if (object != null) {
Log.i("---------FIND ANS QUERY", "SUCCESS I: " + object.getID());
answered(object);
}
if (e != null) {
Log.i("---------FIND ANS QUERY", "ERROR: " + e.getLocalizedMessage());
}
}
});
}
public void answered(CloudObject object) throws CloudException {
CloudObject [] user = {CloudUser.getcurrentUser()};
Log.i("------UPDATE ANS OBJECT", "A: " + this.answered);
Log.i("------UPDATE ANS OBJECT", "W: " + this.wrongAnswer);
Log.i("------UPDATE ANS OBJECT", "R: " + this.rightAnswer);
object.set("earnings", earnings);
object.set("dividend", dividend);
object.set("answered", user);
if (this.wrongAnswer == 1) {
object.set("wrong", user);
}
if (this.rightAnswer == 1) {
object.set("right", user);
}
object.save(new CloudObjectCallback() {
@Override
public void done(CloudObject object, CloudException e) throws CloudException {
if (object != null) {
// Success
Log.i("------UPDATE ANS OBJECT", "SUCCESS I: " + object.getId());
}
if (e != null) {
// Error
Log.i("------UPDATE ANS ERROR:", e.getLocalizedMessage());
}
}
});
}
但当我在两部手机上尝试时,它只添加了第一个点击它的用户,并跳过了第二个。如何将用户不断添加到同一个框中?
我认为问题出在这一行CloudObject [] user = {CloudUser.getcurrentUser()};
您正在创建一个仅包含当前用户的数组,以便在使用object.set("answered", user);
更新CloudObject
时,您只是覆盖列表列中的任何现有用户列表,而不是按照实际需要将当前用户追加到现有用户
您应该做的是将所有现有用户检索到适当的数据结构中(如ArrayList或Set),并在更新CloudObject
之前用users.add(CloudUser.getCurrentUser())
附加当前用户