类A:公用类,其中包含一些控件的单击事件,因为该Fragment可能被公用,不希望在这里进行单击事件的处理
类B:主类,一般为主Activity对应的类
方法:
1、在类A中(如ClassPopupWindow)声明ClassPopupWindowListener mListener=null;
2、添加对应控件的单击相应监听,如 mGridView.setOnItemClickListener(mOnItemClickListener);
3、然后在单击处理事件中重新定义一个OnItemClick方法
private OnItemClickListener mOnItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
//该单击事件中可以进行一些公有的事件处理,如调用gridview的dismiss()方法
if(mListener!=null){
mListener.OnItemClick(position);//调用接口中的抽象方法,该方法要在实现类中重写,if判断必须加,否则会报异常
}
}
};
4、创建接口
public interface ClassPopupWindowListener{
void OnItemClick(int position);
}
5、 新建方法setListener(),该步骤非常重要,否则会找不到在类B中重写的OnItemClick()方法
public void setListener(ClassPopupWindowListener listener) {
mListener = listener;
}
6、类B implements ClassPopupWindowListener接口,在类B中声明类A对象private A a ,在初始化中a=new A();然后调用a.setListener(),相当于绑定
如private ClassPopupWindow mClassPopupWindow;
在初始化中
mClassPopupWindow = new ClassPopupWindow(this, mClassList);
mClassPopupWindow.setListener(this);
7、在类B中重写OnItemClick()方法,在这里进行相关处理