Parse,Android:通过查询从UserObject检索数据集



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

更大的目标是使用数据创建自定义列表视图。 我有这个解析查询:

//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 派生的匿名类必须声明为抽象 或实现抽象方法done(List,ParseException) 查找回调

如果我将 done 方法更改为:

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

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

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

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

非常感谢

迈克尔

这是因为您的查询是针对用户列表的,并且findInBackground()返回一个列表,因此使用 FindCallback<ParseUser>() 。有多种解决方案,具体取决于您要执行的操作:

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

最新更新