public List<Post> loadPostsFromBomb(){
postList = new ArrayList<>();
BmobQuery<Post> query = new BmobQuery<>();
query.findObjects(ContextHolder.getContext(), new FindListener<Post>() {
@Override
public void onSuccess(List<Post> object) {
// TODO Auto-generated method stub
if (object.size() != 0) {
postList.addAll(object);
Toast.makeText(ContextHolder.getContext(),postList.get(0).getUserName(),Toast.LENGTH_LONG).show();
} else {
Toast.makeText(ContextHolder.getContext(),"还没有约球组织",Toast.LENGTH_LONG).show();
}
}
@Override
public void onError(int code, String msg) {
// TODO Auto-generated method stub
Toast.makeText(ContextHolder.getContext(), msg + " " + code, Toast.LENGTH_LONG).show();
}
});
return postList;
}
BmobQuery是一种低音工具。现在,我可以在onSuccess()右边获取对象,onSuccess中的postList可以正确赋值。但是当返回postList时,它为null。
有什么问题?我认为这可能是Listener的问题..如何在onSuccess方法中获取对象?非常感谢您的关注。
答案 0 :(得分:0)
它将始终返回null,因为在
之前调用了return语句 public void onSuccess(List<Post> object)
所以不是返回创建一个全局List。这样您就可以在 onSuccess()功能
之后访问它答案 1 :(得分:0)
你需要这样做:
添加界面:
public interface ResponseListener {
void onSuccess(List<Post> objects);
}
创建method
而不是function
:
public void loadPostsFromBomb(ResponseListener listener){
postList = new ArrayList<>();
BmobQuery<Post> query = new BmobQuery<>();
query.findObjects(ContextHolder.getContext(), new FindListener<Post>() {
@Override
public void onSuccess(List<Post> object) {
// TODO Auto-generated method stub
if (object.size() != 0) {
postList.addAll(object);
listener.onSuccess(postList);
Toast.makeText(ContextHolder.getContext(),postList.get(0).getUserName(),Toast.LENGTH_LONG).show();
} else {
Toast.makeText(ContextHolder.getContext(),"还没有约球组织",Toast.LENGTH_LONG).show();
}
}
@Override
public void onError(int code, String msg) {
// TODO Auto-generated method stub
Toast.makeText(ContextHolder.getContext(), msg + " " + code, Toast.LENGTH_LONG).show();
}
});
}
您需要在Activity
/ Fragment
中实施ResponseListener:
您将在Override
方法上收到列表。
public class MenuActivity extends ActionBarActivity implements ResponseListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_menu);
// Other stuff
loadPostsFromBomb(this);
}
@Override
public void onSuccess(List<Post> objects); {
Log.i("List" , "Received");
}
}