比如我在fragment里面定义一个接口
public static interface OnScrollListener{
void scrollUp(int dip);
void scrollDown(int dip);
}
这个接口里面的两个方法要在使用这个接口的地方重写,重写的时候写你需要的操作就行,就像clickllistener的用法。
那么什么时候会给这个接口传参数呢?
需要在这个fragment里面来实例
private OnScrollListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnScrollListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
}
}
在你需要调用这个回调的时候加上你在 接口里面定义的函数,在实现接口的地方就可以接受到你传的参数。下面这段代码还是在fragment中
if(nY < 0 ){
//向上
mListener.scrollUp((int)nY);
}
else {
mListener.scrollDown((int)nY);
}
调用了之后,你传进去的参数,比如这边的nY就会被传到实现这个接口的地方.
和clicklistener一样的用法,比如下面这段代码是我在activity中的代码:
@Override
public void scrollUp(int dip) {
if(mTitleBar.getBottom() + dip > mActionBarHeight){
mTitleBar.layout(mTitleBar.getLeft(),mTitleBar.getTop(),mTitleBar.getRight(),mTitleBar.getBottom()+dip);
mFrameContain.layout(mFrameContain.getLeft(),mFrameContain.getTop() + dip,mFrameContain.getRight(),mFrameContain.getBottom());
}else{
mTitleBar.layout(mTitleBar.getLeft(),mTitleBar.getTop(),mTitleBar.getRight(),mActionBarHeight);
mFrameContain.layout(mFrameContain.getLeft(), mActionBarHeight, mFrameContain.getRight(), mFrameContain.getBottom());
}
}
那如果我们的接口定义在一个没有attach的地方,比如adapter那要怎么绑定接口呢?
那就和clicklistenerr一样,在你定义接口的地方定义一个set接口的方法 比如:
public void setOnChoiseListener(onChoiseListener listener){
mListenr = listener;
}
public interface onChoiseListener{
public void getChoiseText(String text);
}
在需要使用接口的时候,调用这个adapter的setOnChoiseListener方法,这样就可以和clicklistener一样的使用方法了。
当然,要记得和上面的一样在需要的地方传参。