我正在使用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>()
。