Android:在Parse中从User类中检索用户个人资料图片

时间:2014-04-14 11:40:37

标签: android parse-platform

我想让列表视图中的当前用户关注者引导他们的名字和个人资料图片,我在解析时有两个类: 用户类:包括(用户名和图片列) 以及类:includes(username和follower_name columns)

现在我的查询:

@Override
protected Void doInBackground(Void... params) {
// Create the array
users = new ArrayList<UserInfo>();
try {
      ParseUser currentuser = ParseUser.getCurrentUser();
      ParseQuery<ParseObject> innerQuery = new ParseQuery<ParseObject>("following");
      innerQuery.whereEqualTo("username", currentuser);
      ParseQuery<ParseUser> query = ParseUser.getQuery();
      query.whereMatchesQuery("username", innerQuery);
      // by ascending
      query.orderByAscending("createdAt");
      ob = query.find();
      for (ParseObject user : ob) {
      // Locate images in pic column
      ParseFile image = (ParseFile) user.get("pic");

      UserInfo map = new UserInfo();
      map.setUserName((String) user.get("follower_name"));
      map.setPic(image.getUrl());
      users.add(map);

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

我是一个新的解析器并试图了解他们的查询

更新:

我将查询更改为:

        @Override
        protected Void doInBackground(Void... params) {
        users = new ArrayList<UserInfo>();
        //ParseQuery<ParseUser> query = ParseUser.getQuery();


        try {
            ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("following");
            query.whereEqualTo("username", "suma");
            ParseQuery<ParseUser> a = ParseUser.getQuery();
            a.whereMatchesKeyInQuery("username", "follower_username", query);
            a.orderByAscending("createdAt");
            ob = a.find();
            for (ParseObject user : ob) {
                ParseFile image = (ParseFile) user.get("pic");
                UserInfo map = new UserInfo();
                map.setUserName((String) user.get("username"));
                map.setPic(image.getUrl());
                users.add(map);
            }
        } catch (ParseException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
        return null;
    }

只有当用户有一个关注者时,它才能正常运行(许多关注者)应用程序崩溃

请帮忙?

1 个答案:

答案 0 :(得分:0)

尝试类似

的内容
@Override
protected Void doInBackground(Void... params) {
// Create the array
users = new ArrayList<UserInfo>();
try {
      ParseQuery<ParseObject> innerQuery = new ParseQuery<ParseObject>("following");
      innerQuery.whereEqualTo("username", ParseUser.getCurrentUser().get("username"));
      ParseQuery<ParseUser> query = ParseUser.getQuery();
      query.whereMatchesQuery("username", innerQuery);
      // by ascending
      query.orderByAscending("createdAt");
      ob = query.find();
      for (ParseObject user : ob) {
      // Locate images in pic column
      ParseFile image = (ParseFile) user.get("pic");

      UserInfo map = new UserInfo();
      map.setUserName((String) user.get("follower_name"));
      map.setPic(image.getUrl());
      users.add(map);

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

这应该更符合您的需求,但我认为这不会起作用(尽管我不能肯定不知道您的数据模型)。在当前模型中,您可能会有一个指向以下类中的用户列的指针。然后你需要比较对象本身;不是用户名。