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是一种Bass工具。现在,我可以正确获取 onSuccess(( 中的对象,而 onSuccess 中的 postList 可以是 Assignment right。但是当返回 postList 时,它是空的。
怎么了?我认为这可能是听众的问题。如何在 onSuccess 方法中获取对象?非常感谢您的关注。
你需要这样做:
添加接口:
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");
}
}
它将始终返回 null,因为您的 return 语句在之前被调用
public void onSuccess(List<Post> object)
因此,不要返回,而是创建一个全局列表。这样您就可以在 onSuccess(( 函数之后访问它