-
Notifications
You must be signed in to change notification settings - Fork 5
事件中心
Drowning Coder edited this page Nov 14, 2018
·
1 revision
事件中心的核心思想就是组件只是事件的传递者,不是事件的处理者,也就是楼层只是一个壳,今天可以做事件A,明天可以做事件B。
@ComponentType(
value = 0,
layout = R.layout.single_text,
attach = Text.class
)
public class TextVH extends Component<Text> implements InjectCallback {
private TextView tv;
private View.OnClickListener onClickListener;
public TextVH(Context context, View itemView) {
super(context, itemView);
tv = (TextView) itemView;
}
@Override
public void onBind(int pos, Text item) {
tv.setText(item.title);
//将事件类型和事件所需要的参数通过View.setTag传出。
tv.setTag(item.eventId);
tv.setOnClickListener(onClickListener);
}
@Override
public void onUnBind() {
}
@Override
public void injectCallback(View.OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
}
public class MagicEventCenter implements View.OnClickListener {
@Override
public void onClick(View v) {
//防止快速点击
if (isFastDoubleClick()) return;
//统一处理埋点
//处理Glide图片点击
//处理常规View点击
}
}
public ToolKitBuilder<T> setEventCenter(View.OnClickListener onClickListener) {
this.eventCenter = onClickListener;
return this;
}
欢迎Star👏~欢迎提issues和PR