Parse,Android:通过查询

时间:2015-04-24 17:42:50

标签: android parse-platform

我在Android上使用Parse;我正在尝试创建一个将按指定类型检索用户的查询,如果该用户属于该类型,则获取与该用户关联的数据。

更大的目标是使用数据创建CustomList视图。我有这个ParseQuery:

//Parse data to get users
ParseQuery<ParseUser> query = ParseUser.getQuery();

query.orderByAscending(ParseConstants.KEY_PRACTICE_NAME);
query.whereEqualTo("userType", "midwife");
query.findInBackground(new FindCallback<ParseUser>() {
    public void done(ParseUser user, ParseException e) {
        if (user == null) {
            Log.d("user", "The getFirst request failed.");
            // You don't have a good value to use, so figure
            // out a way to handle that scenario
        } else {
            Log.d("id", "Retrieved the object.");

            String midwifefirm = user.getString("practicename");
            String experience = user.getString("yearsofexperience");
            String education = user.getString("education");
            String philosophy = user.getString("practicephilosophy");
        }
    }
});

此时出现错误:

query.findInBackground(new FindCallback<ParseUser>() {

它声明:

  

“必须将从FindCallback派生的匿名类声明为abstract   或者实现抽象方法done(List,ParseException)   Findcallback

如果我将done方法更改为:

public void done(List<ParseUser> user, ParseException e)

错误消失了,但是,我似乎无法使用getString(错误:无法解析方法)。

我的猜测是我在done方法中获取了一个数组列表,然后尝试检索单个数据字符串......

如何使用ParseQuery设置查询以获取有关特定用户类型的数据?

非常感谢

迈克尔

1 个答案:

答案 0 :(得分:2)

这是因为您的查询是针对用户列表的,findInBackground()返回列表因此使用FindCallback<ParseUser>()。根据您的尝试,有多种解决方案:

  • 遍历列表,其中每个项目都是ParseUser,然后您可以在每个项目上调用getString()
  • 使用query.getInBackground("userObjectId", new GetCallback<ParseObject>()将返回单个用户并对其进行操作。
  • 如果您没有userObjectId,请使用getFirstInBackground(new GetCallback<ParseObject>()但您知道您的查询应该只返回一个用户,然后使用该对象。