Search code examples
javaandroidparse-platform

How to make this method independently?


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

I want to use private ArrayList mMyArray not static

I've heard that only final variable can access in anonymous inner class

So then can't I use this method independently?


Solution

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

    Then you can call this function everywhere, like this:

    patchUsersExceptCurrentUser("Example", new ParseListener() {
        @Override
        public void onSucess((List<Object>objects) {
            myArray = objects;
        }
    
        @Override
        public void onError(ParseException e) {
            //show error
        }
    });