2017-08-09 33 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