package com.aiyaapp.camera.sdk.util; import android.view.View; /*** * * @description 点击事件工具类 * * 由 马君 创建于 2016年01月24日 11:48 ***/ public class ClickUtils { public static final int TAG_TYPE=0x0F000001; public static final int TAG_POS=0x0F000002; public static final int TAG_POS_CHILD=0x0F000003; public static final int TAG_DATA=0x0F000010; public static final int TAG_DATA_TYPE=0x0F000011; /** * 设置view的点击类型,可以直接设置为view的id * @param v * @param type */ public static void setType(View v,int type){ v.setTag(TAG_TYPE,type); } /** * 设置view的一级position,在adapterview中可以设置为item的position * @param v * @param pos */ public static void setPos(View v,int pos){ v.setTag(TAG_POS,pos); } /** * 设置view的二级position,adapterview嵌套adapterview的情况下使用,设置 * 在二级adapterview中的item的position * @param v * @param posChild */ public static void setPosChild(View v,int posChild){ v.setTag(TAG_POS_CHILD,posChild); } /** * 给view设置附加数据 * @param v * @param data */ public static void setData(View v,Object data){ v.setTag(TAG_DATA,data); } /** * 获取view的类型 * @param v * @return */ public static int getType(View v){ if(v!=null&&v.getTag(TAG_TYPE)!=null){ return (int) v.getTag(TAG_TYPE); } return -1; } /** * 获取view的一级position * @param v * @return */ public static int getPos(View v){ if(v!=null&&v.getTag(TAG_POS)!=null){ return (int) v.getTag(TAG_POS); } return -1; } /** * 获取view的二级position * @param v * @return */ public static int getPosChild(View v){ if(v!=null&&v.getTag(TAG_POS_CHILD)!=null){ return (int) v.getTag(TAG_POS_CHILD); } return -1; } public static <T> T getData(View v){ if(v!=null&&v.getTag(TAG_DATA)!=null){ return (T)v.getTag(TAG_DATA); } return null; } /** * 给view增加监听事件 * @param v * @param listener * @param type view的类型 */ public static void addClickTo(View v,View.OnClickListener listener,int type){ if(listener!=null&&v!=null){ setType(v,type); v.setOnClickListener(listener); } } /** * 给view增加点击事件type设置为view的id * @param v * @param listener */ public static void addClickTo(View v,View.OnClickListener listener){ if(listener!=null&&v!=null){ setType(v,v.getId()); v.setOnClickListener(listener); } } /** * 点击监听器 */ public abstract static class OnClickListener implements View.OnClickListener{ public OnClickListener(){ } @Override public void onClick(View v) { onClick(v,ClickUtils.getType(v),ClickUtils.getPos(v),ClickUtils.getPosChild(v)); } /** * 点击事件监听 * @param v 被点击的view * @param type 被点击view的type * @param pos 被点击的view的一级position * @param child 被点击的view的二级position */ public abstract void onClick(View v,int type,int pos,int child); } }