实现callBack(onSuccess())的方法是否返回onSucess()返回的值?

时间:2016-06-21 07:31:01

标签: java android asynchronous callback

我重写了方法getView(),并且我试图在返回新视图的onSuccess()方法中使视图膨胀。 onSuccess返回的值是getView()返回的值?

这是我的代码:

    @Override 
    public View getView(final int position, final View view,final ViewGroup parent) {

     aMethodWithAcallBack(new myCallBack(){

        @Override
        public void onSuccess(ArrayList<Content> contents) {

            contentsList = contents ;
            View mView = inflateIfRequired(view, position, parent);

            if(getItem(position).content_type_id == 2) {
                 bindCard(view, getItem(position));
            }
           else {
              if(getItem(position).content_type_id == 3)
                 bindVideo(view,getItem(position)) ;
           }

           return mView ;
      });


      @override
      public void onFail() {
        //
      }

      return view ;
   } 

您可能想知道为什么我使用了CallBack,我必须使用它,因为contentsList项是我ListView的项目,并且这个contentsList是由callBack启动的因为它的元素是从服务器获取的。

1 个答案:

答案 0 :(得分:0)

不,通过从onSuccess()返回值无法完成。因为没有主线程可以接收onSuccess()方法返回的值。

说明:

1)从其他地方调用getView()方法 - 这是一个线程让我们把它保持为主。

2)在这个主线程的执行流程中,执行异步回调方法aMethodWithAcallBack(),这个异步回调调用将是一个不同的线程。

3)执行getView()方法的主线程将通过执行return view ;

直接传递并退出方法

4)异步回调成功后,行return mView ;将被执行,但没有主线程接收它。即我们不会有调用getView()方法的主线程。