|
@@ -1,7 +1,13 @@
|
|
-package com.benyanyi.viewbind;
|
|
|
|
|
|
+package com.benyanyi.viewbind.inject;
|
|
|
|
|
|
import android.view.View;
|
|
import android.view.View;
|
|
|
|
|
|
|
|
+import com.benyanyi.viewbind.annotation.BindString;
|
|
|
|
+import com.benyanyi.viewbind.annotation.BindView;
|
|
|
|
+import com.benyanyi.viewbind.annotation.OnClick;
|
|
|
|
+import com.benyanyi.viewbind.init.ViewInit;
|
|
|
|
+import com.benyanyi.viewbind.listener.ViewBindClickListener;
|
|
|
|
+
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Method;
|
|
|
|
|
|
@@ -11,11 +17,11 @@ import java.lang.reflect.Method;
|
|
* @email ben@yanyi.red
|
|
* @email ben@yanyi.red
|
|
* @overview
|
|
* @overview
|
|
*/
|
|
*/
|
|
-class ViewInject {
|
|
|
|
|
|
+public class ViewInject {
|
|
/**
|
|
/**
|
|
* 控件id反射
|
|
* 控件id反射
|
|
*/
|
|
*/
|
|
- static void injectFiled(ViewInit inject, Object object) {
|
|
|
|
|
|
+ public static void injectFiled(ViewInit inject, Object object) {
|
|
Class<?> aClass = object.getClass();
|
|
Class<?> aClass = object.getClass();
|
|
Field[] fields = aClass.getDeclaredFields();
|
|
Field[] fields = aClass.getDeclaredFields();
|
|
for (Field field : fields) {
|
|
for (Field field : fields) {
|
|
@@ -35,10 +41,31 @@ class ViewInject {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * string值反射
|
|
|
|
+ */
|
|
|
|
+ public static void injectString(ViewInit inject, Object object) {
|
|
|
|
+ Class<?> aClass = object.getClass();
|
|
|
|
+ Field[] fields = aClass.getDeclaredFields();
|
|
|
|
+ for (Field field : fields) {
|
|
|
|
+ BindString bindString = field.getAnnotation(BindString.class);
|
|
|
|
+ if (bindString != null) {
|
|
|
|
+ int value = bindString.value();
|
|
|
|
+ String string = inject.string(value);
|
|
|
|
+ field.setAccessible(true);
|
|
|
|
+ try {
|
|
|
|
+ field.set(object, string);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 控件点击事件反射
|
|
* 控件点击事件反射
|
|
*/
|
|
*/
|
|
- static void injectClick(ViewInit inject, Object object) {
|
|
|
|
|
|
+ public static void injectClick(ViewInit inject, Object object) {
|
|
Class<?> aClass = object.getClass();
|
|
Class<?> aClass = object.getClass();
|
|
Method[] methods = aClass.getDeclaredMethods();
|
|
Method[] methods = aClass.getDeclaredMethods();
|
|
for (Method method : methods) {
|
|
for (Method method : methods) {
|
|
@@ -48,15 +75,11 @@ class ViewInject {
|
|
if (values.length > 0) {
|
|
if (values.length > 0) {
|
|
for (int value : values) {
|
|
for (int value : values) {
|
|
View view = inject.find(value);
|
|
View view = inject.find(value);
|
|
- String netErrorMsg = "";
|
|
|
|
- boolean isCheckNet = false;
|
|
|
|
- ClickNet clickNet = method.getAnnotation(ClickNet.class);
|
|
|
|
- if (clickNet != null) {
|
|
|
|
- netErrorMsg = clickNet.netErrorMsg();
|
|
|
|
- isCheckNet = clickNet.isCheckNet();
|
|
|
|
- }
|
|
|
|
|
|
+ String netErrorMsg = onClick.netErrorMsg();
|
|
|
|
+ boolean isCheckNet = onClick.isCheckNet();
|
|
|
|
+ boolean doubleClick = onClick.isDoubleClick();
|
|
if (view != null) {
|
|
if (view != null) {
|
|
- view.setOnClickListener(new ClickListener(method, object, netErrorMsg, isCheckNet));
|
|
|
|
|
|
+ view.setOnClickListener(new ViewBindClickListener(method, object, netErrorMsg, isCheckNet, doubleClick));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|