我有一个带有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?
答案 0 :(得分:3)
- 为什么回调对象在片段中使用时不为null,它从未实例化
醇>
您的Activity
很可能没有注册为监听器,您创建的callback
变量(与Activity
无关)OnPdfClickedListener
的实例1}}和(可能)在事件发生时使用了它。
如何从适配器回调一个Activity?
将对Activity
的引用传递到您的MyAdapter
课程,并将其投放到OnPdfClickedListener
,然后使用它来调用onPdfClicked
而不是当前的callback
变量
答案 1 :(得分:0)
尝试添加此内容:
在实现界面的Activity中:
new MyAdapter(this,....);
在适配器中:
MyAdapter(Context context, ...){
callback = (OnPdfClickedListener)context;
}