接口回调、自定义观察者模式和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()); } } });