1

我已经阅读了很多关于这个主题的论坛,但没有一个是特定于 Android/Parse 的。
我有一个名为“Rankingboards”的 Parse 类,如下所示:

ObjectId UserId ratingAggregate
---------- --------- ----------
123456 ABCDE 5.0

上面的“UserID”列实际上是指向 User(Parse 中的默认类)中的“ObjectId”列的指针。

ObjectId
----------
ABCDE

于是我写了如下代码,希望在getQuery("Rankingboards")中使用whereEqualTo("UserID","ABCDE")获取ratingAggregate的值(即5.0)。

    List<ParseObject> ob;
    final RatingBar ratingBar;
    ratingBar = (RatingBar) v.findViewById(R.id.ratingBar);
    String userid = user.getObjectId();
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Rankingboards");
    query.whereEqualTo("UserID", userid);
    try {
        ob = query.find();
        Log.d("POSITION",""+ob.size());
        for (int i = 0; i < ob.size(); i++) {
            Number num7 = ob.get(i).getNumber("ratingsAggregate");
            if (num7!=null) {
                ratingBar.setRating(num7.floatValue());
            }

        }

     } catch (ParseException e) {
         Log.e("Error", e.getMessage());
         e.printStackTrace();
     }

但这不起作用,因为“UserID”是一个指针而不是字符串。
我在其他地方读到我必须使用“包含”,但我无法让代码工作。
希望有人能启发我。

注意:
(1)我正在使用一个定制的 ListAdapter,它接受一个 ParseUser 对象(称为用户)作为输入。这就是您在代码中看到 user.getObjectID() 并且我已经验证 ObjectID 正确的原因。
(2) ob.size() 始终为 0,因为查询不起作用。当我打印出 query.size() 时,排行榜中的条目总数是正确的。

4

1 回答 1

0

我刚刚找到了解决方案,我遇到了同样的问题。当您使用

query.whereEqualTo("UserID", userid);

它是一个指针,当你做相等时你不能使用一个字符串。这样做的方法是引入对象本身。消除

String userid = user.getObjectId();

并介绍user您拥有用户 ID的位置

query.whereEqualTo("UserID", user);

List<ParseObject> ob;
    final RatingBar ratingBar;
    ratingBar = (RatingBar) v.findViewById(R.id.ratingBar);
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Rankingboards");
    query.whereEqualTo("UserID", user);
    try {
        ob = query.find();
        Log.d("POSITION",""+ob.size());
        for (int i = 0; i < ob.size(); i++) {
            Number num7 = ob.get(i).getNumber("ratingsAggregate");
            if (num7!=null) {
                ratingBar.setRating(num7.floatValue());
            }

        }

     } catch (ParseException e) {
         Log.e("Error", e.getMessage());
         e.printStackTrace();
     }
于 2015-03-02T18:43:01.137 回答