接口和自定义观察者模式

###接口回调、自定义观察者模式和EvnetBus

众所周知,android中经常要用到activity、fragment中互相传递参数。或者framgent中的数据改变,另外的fragment或者activity中需要跟着改变。这个时候 通常都会用接口的方式实现。
}

###接口回调

  • 定义一个接口
public interface OnShakeListener {
    void onShakeClistenerClick(View v, String data);
  • 声明

    private OnShakeListener mOnShakeListener;
    
  • 绑定(我自己的叫法,勿喷)

    public  void setOnShakeListner(OnShakeListener listner){
    this.mOnShakeListener = listner;
    }
    
  • 使用

tv.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mOnShakeListener.onShakeClistenerClick(tv,tv.getText().toString());
    }
});

其实还有个另外的写法

  • 同样是定义接口不变

     public interface OnShakeListener {
        void onShakeClistenerClick(View v, String data);
    }
    
  • 直接使用

context是成员变量
tv.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Toast.makeText(UIUtils.getContext(), mDatas.get(index), Toast.LENGTH_SHORT).show();
           if (context instanceof OnShakeListener) {
               ((OnShakeListener) context).onShakeClistenerClick(tv, tv.getText().toString());
           }
       }
   });