我使用Parse数据循环遍历Android中的数据。我想出了这个作为获取用户信息的方法;更大的目标是创建一个我可以在数组适配器中使用的数据模型,因此我可以创建一个自定义列表视图(如所描述的here)在该示例中,数据是硬编码的,而不是从数据库。
public static ArrayList<Midwifefirm> getUsers() {
//Parse data to get users
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.orderByAscending(ParseConstants.KEY_PRACTICE_NAME);
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> users, ParseException e) {
if (e == null) {
final List<ParseUser> mMidwives;
mMidwives = users;
String usertype;
String[] midwives = new String[mMidwives.size()];
String[] yearsofexperience = new String[mMidwives.size()];
String[] education = new String[mMidwives.size()];
String[] philosophy = new String[mMidwives.size()];
int i = 0;
for (ParseUser user : mMidwives) {
usertype = user.getString("userType");
if (!Arrays.asList(midwives).contains(usertype) && usertype != "patient") {
midwives[i] = user.getString("practicename");
yearsofexperience[i] = user.getString("yearsofexperience");
education[i] = user.getString("education");
philosophy[i] = user.getString("practicephilosophy");
ArrayList<Midwifefirm> midwifefirm = new ArrayList<Midwifefirm>();
midwifefirm.add(new Midwifefirm(midwives[i], yearsofexperience[i], education[i], philosophy[i]));
return midwifefirm;
}
}
}
}
});
}
目的是为每个没有患者类型的用户收集有关他们的数据,然后将其存储在arrayList中。
但是在return语句中,出现错误:cannot return a value from a method with a void return type.
我可能会使这个过于复杂...通过各种来源阅读以获得此模型...最后,我想在用户选择城市后显示有关特定用户的信息列表......因此,它会显示有关该城市医疗实践的所有信息。
感谢您的帮助
迈克尔
答案 0 :(得分:1)
代码甚至不会以您发送的形式编译。
使用findInBackground
时进行异步调用。这意味着调用它的代码将在调用它之后继续执行。它不会等待它完成,它不再关心它了。
处理此类代码的正确方法是编写所需的逻辑并操纵回调中的结果。因此,我们更改的第一件事是getUsers
到void
的返回类型。
现在getUsers
只是说:“好的,请在后台找到这个,我会让你在done()
中做你的事。”
public static void getUsers() {
//Parse data to get users
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.orderByAscending(ParseConstants.KEY_PRACTICE_NAME);
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> users, ParseException e) {
if (e == null) {
// here you manipulate your list. you set up your data structures
// or whatever and call other methods from your `Activity` or whatever,
// passing the data as parameter
}
}
});
}
您需要更新调用getUsers
的代码并需要用户列表,因为如您所见,它无法立即获得结果。您可以在done
中移动部分代码。
LE:您可能还想从方法中删除static
修饰符。