/** * Copyright 2013 ABSir's Studio * * All right reserved * * Create on 2013-5-2 下午2:17:25 */ package com.android.pc.ioc.view.listener; import java.lang.reflect.Method; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import com.android.pc.ioc.app.Ioc; import com.android.pc.ioc.core.kernel.KernelClass; import com.android.pc.ioc.core.kernel.KernelReflect; import com.android.pc.ioc.core.kernel.KernelString; /** * @author absir * */ public class OnItemSelected extends OnListener implements OnItemSelectedListener { /** noneMethod */ private String noneMethod; /** noneTargetMethod */ private Method noneTargetMethod; /* * (non-Javadoc) * * @see android.widget.AdapterView.OnItemSelectedListener#onItemSelected(android .widget.AdapterView, android.view.View, int, long) */ @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub if (arg0 == null || arg1 == null) { Ioc.getIoc().getLogger().d(" 无法调用OnItemSelected(如果没有对程序造成影响请忽略,这是个未找出问题的错误)\n"); return; } invoke(arg0, arg1, arg2, arg3); } /* * (non-Javadoc) * * @see android.widget.AdapterView.OnItemSelectedListener#onNothingSelected(android .widget.AdapterView) */ @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub if (noneMethod != null) { noneTargetMethod = KernelReflect.assignableMethod(target.getClass(), noneMethod, 0, true, KernelClass.parameterTypes(new Object[] { arg0 })); noneMethod = null; } if (noneTargetMethod != null) { KernelReflect.invoke(target, noneTargetMethod, arg0); } } /* * (non-Javadoc) * * @see com.absir.android.view.listener.Listener#listener(android.view.View) */ @Override protected void listener(View view) { // TODO Auto-generated method stub if (view instanceof AdapterView) { String[] methods = method.split(","); if (methods.length == 2) { method = methods[0]; noneMethod = methods[1]; } else { noneMethod = "none" + KernelString.uncapitalize(method); } ((AdapterView) view).setOnItemSelectedListener(this); } else { Ioc.getIoc().getLogger().e(view.getClass() + " 无法设置OnItemSelected 请检查InjectMethod的参数\n"); } } }