回调接口的基本使用

比如我在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一样的使用方法了。

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


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值