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
    }
});

09-12 19:26