如何独立制作此方法?
问题描述:
private static ArrayList mMyArray;
public void patchUsersExceptCurrentUser(String name) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereNotEqualTo("username", name);
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
for (ParseUser user : objects) {
mMyArray.add(user.getUsername());
}
}
}
});
}
我想用私人的ArrayList mMyArray不是静态如何独立制作此方法?
我听说,只有最后一个变量可以在匿名内部类
访问所以后来我不能单独使用这种方法吗?
答
public void patchUsersExceptCurrentUser(String name,ParseListener listener) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereNotEqualTo("username", name);
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
listener.onSucess(objects);
}
else{
listener.onError(e);
}
}
});
}
public interface ParseListener{
void onSucess(List<Object>objects);
void onError(ParseException e);
}
然后,你可以随处调用这个函数,就像这样:
patchUsersExceptCurrentUser("Example", new ParseListener() {
@Override
public void onSucess((List<Object>objects) {
myArray = objects;
}
@Override
public void onError(ParseException e) {
//show error
}
});
+1
谢谢你帮助我!祝你有美好的一天 – JillAndMe
使mMyArray非静态的。它应该工作。 – Charu
如果您想在完成操作后将回叫发送到呼叫者类,您可以创建一个接口,并且可以发送回呼叫者类 –
如果从内部类访问,它需要是“final”或类字段(这是您的案件)。所以它不需要像@Charu所说的那样是静态的。 – Eselfar