2017-08-09 32 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()); 
       } 
      } 
     } 
    }); 
} 

我想用私人的ArrayList mMyArray不是靜態如何獨立製作此方法?

我聽說,只有最後一個變量可以在匿名內部類

訪問所以後來我不能單獨使用這種方法嗎?

+1

使mMyArray非靜態的。它應該工作。 – Charu

+1

如果您想在完成操作後將回叫發送到呼叫者類,您可以創建一個接口,並且可以發送回呼叫者類 –

+0

如果從內部類訪問,它需要是「final」或類字段(這是您的案件)。所以它不需要像@Charu所說的那樣是靜態的。 – Eselfar

回答

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

然後,你可以隨處調用這個函數,就像這樣:

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

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

謝謝你幫助我!祝你有美好的一天 – JillAndMe