您的位置:首页 > 其它

回调接口的基本使用

2015-08-27 17:12 429 查看
比如我在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.");
}
}



onAttach这个函数实在和activity建立联系之后会被调用。

在你需要调用这个回调的时候加上你在 接口里面定义的函数,在实现接口的地方就可以接受到你传的参数。下面这段代码还是在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一样的使用方法了。

当然,要记得和上面的一样在需要的地方传参。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: