人造人.如何获取来自侦听器的参数


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(( 函数之后访问它

最新更新