Back to project page markj.
The source code is released under:
GNU Lesser General Public License
If you think the Android project markj listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.markjmind.mobile.api.android.controller; // ww w . j a v a2s . c o m import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; /** * start : 2013.11.17<br> * <br> * OnClick ????? ?? ??? ?? ?????<br> * * @author ??? * */ public class OnClickListenerReceiver implements OnClickListener{ private Context context; private Object receiver; private String methodName; private Object param; private OnClickListenerReceiver(){ } public OnClickListenerReceiver(Context context){ this.context = context; } public void setParam(Object param){ this.param = param; } @Override public void onClick(View v) { invoke(receiver,methodName,v); } private void invoke(Object receiver, String methodName,View v){ Class cls=receiver.getClass(); try { if(param!=null){ Class[] params = {View.class, param.getClass()}; Method method = cls.getMethod(methodName, params); method.invoke(receiver, v, param); }else{ Class[] params = {View.class}; Method method = cls.getMethod(methodName, params); method.invoke(receiver, v); } } catch (IllegalArgumentException e) { throw new JwMapperException("\n["+receiver.getClass().getName()+"]method:"+methodName+", ???? ????? ?? ?????????.",e); } catch (IllegalAccessException e) { throw new JwMapperException("\n["+receiver.getClass().getName()+"]method:"+methodName+", ??????? ?? ?????.",e); } catch (InvocationTargetException e) { throw new JwMapperException("\n["+receiver.getClass().getName()+"]method:"+methodName+", ??? ????? Exception??? ????????.",e); }catch (NoSuchMethodException e) { throw new JwMapperException("\n["+receiver.getClass().getName()+"]method:"+methodName+", Field?? ???? OnClick ??? ????.",e); } } /** * ?? receiver ???????? ??? R_id_view?? Click???? ?????. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @param R_id_view ?????? ???? view id */ public void setOnClickListener(Object receiver, String methodName,int R_id_view, View parents){ parents.findViewById(R_id_view).setOnClickListener(getOnClickListener(receiver,methodName)); } /** * ?? receiver ???????? ??? R_id_view?? Click???? ?????. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @param R_id_view ?????? ???? view id * @param activity ?? activity */ public static void setOnClickListener(Object receiver, String methodName,int R_id_view, Activity activity){ activity.findViewById(R_id_view).setOnClickListener(getOnClickListener(receiver,methodName)); } /** * ?? receiver ???????? ??? view?? Click???? ?????. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @param view ?????? ???? view */ public void setOnClickListener(Object receiver, String methodName,View view){ view.setOnClickListener(getOnClickListener(receiver,methodName)); } /** * ?? receiver ???????? ??? OnClickListener???? ????. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @return OnClickListener OnClickListener */ public static OnClickListener getOnClickListener(Object receiver, String methodName){ OnClickListenerReceiver ocl = new OnClickListenerReceiver(); ocl.receiver = receiver; ocl.methodName = methodName; return ocl; } /** * ?? receiver ???????? ??? R_id_view?? Click???? ?????. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @param R_id_view ?????? ???? view id */ public void setOnClickParamListener(Object receiver, String methodName,int R_id_view, View parents,Object param){ parents.findViewById(R_id_view).setOnClickListener(getOnClickParamListener(receiver,methodName,param)); } /** * ?? receiver ???????? ??? R_id_view?? Click???? ?????. * ??????? ???? ??. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @param param * @param R_id_view ?????? ???? view id * @param activity ?? activity */ public static void setOnClickParamListener(Object receiver, String methodName,int R_id_view, Activity activity,Object param){ activity.findViewById(R_id_view).setOnClickListener(getOnClickParamListener(receiver,methodName,param)); } /** * ?? receiver ???????? ??? view?? Click???? ?????. * ??????? ???? ??. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @param param * @param view ?????? ???? view */ public void setOnClickParamListener(Object receiver, String methodName,View view,Object param){ view.setOnClickListener(getOnClickParamListener(receiver,methodName,param)); } /** * ?? receiver ???????? ??? OnClickListener???? ????. * ??????? ???? ??. * @param receiver ??? ??? ????? ??? * @param methodName ??? * @param param * @return OnClickListener OnClickListener */ public static OnClickListener getOnClickParamListener(Object receiver, String methodName, Object param){ OnClickListenerReceiver ocl = new OnClickListenerReceiver(); ocl.setParam(param); ocl.receiver = receiver; ocl.methodName = methodName; return ocl; } }