从(List)Adapter到Activity的回调

时间:2013-03-06 09:55:46

标签: android

我有一个带有ListView的Actvivity,我设置了一个适配器

MyAdapter extends BaseAdapter

该适配器具有回调接口

OnPdfClickedListener callback; 

public interface OnPdfClickedListener {
    public void onPdfClicked();

}

并在活动中

MyActvivity implements MyAdapter.OnPdfClickedListener

@Override
    public void onPdfClicked() {

    Log.d("TEST", "PDF CLICKED in ACTVIIVTY");

}

这与描述here几乎相同,{{3}}就像片段的魅力一样。 从适配器尝试相同时,回调对象为null。

我也尝试过实例化

OnPdfClickedListener callback = new OnPdfClickedListener() {

    @Override
    public void onPdfClicked() {
        // TODO Auto-generated method stub

    }
};

我没有错误,但从未调用Activity中的相应方法。

我的问题是1.为什么回调对象在片段中使用时不是null,它从未实例化

和2.如何从适配器回调一个Activity?

2 个答案:

答案 0 :(得分:3)

  
      
  1. 为什么回调对象在片段中使用时不为null,它从未实例化
  2.   

您的Activity很可能没有注册为监听器,您创建的callback变量(与Activity无关)OnPdfClickedListener的实例1}}和(可能)在事件发生时使用了它。

  

如何从适配器回调一个Activity?

将对Activity的引用传递到您的MyAdapter课程,并将其投放到OnPdfClickedListener,然后使用它来调用onPdfClicked而不是当前的callback变量

答案 1 :(得分:0)

尝试添加此内容:

在实现界面的Activity中:

new MyAdapter(this,....);

在适配器中:

MyAdapter(Context context, ...){
  callback = (OnPdfClickedListener)context;
}