2017-08-09 2 views
1
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()); 
       } 
      } 
     } 
    }); 
} 

Je veux utiliser ArrayList privé mMyArray pas statiqueComment rendre cette méthode indépendante?

J'ai entendu dire que seule variable final peut accéder en classe interne anonyme

Alors je ne peux pas utiliser cette méthode de manière indépendante?

+1

faire non statique mMyArray. Ça devrait marcher. – Charu

+1

Si vous voulez envoyer un rappel à la classe d'appelant après l'action, vous pouvez créer une interface et vous pouvez renvoyer à la classe d'appelant –

+0

Si vous accédez à la classe interne, elle doit être 'final' ou un champ de classe (qui est votre Cas). Donc, il n'a pas besoin d'être statique comme l'a dit @Charu. – Eselfar

Répondre

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

Ensuite, vous pouvez appeler cette fonction partout, comme ceci:

patchUsersExceptCurrentUser("Example", new ParseListener() { 
    @Override 
    public void onSucess((List<Object>objects) { 
     myArray = objects; 
    } 

    @Override 
    public void onError(ParseException e) { 
     //show error 
    } 
}); 
+1

Merci de votre aide! bonne journée – JillAndMe