上一篇,我们在使用的时候不太方便,后再做了一些改造,使用反射。在使用 xxxxx.bindView的时候 同意由一个类的 反射获取对应的辅助类,
public class MyButterKnife {
private static Map<Class,Method> classMethodMap = new HashMap<>();
public static void bindView(Activity target){
if (target != null){
Method method = classMethodMap.get(target.getClass());
try {
if (method == null) {
//因为辅助类有一个前缀 这里要加上,拼接出辅助类的全限定名
String bindClassName = target.getPackageName() +".Bind" +target.getClass().getSimpleName();
Log.i("xxxxxxxx",bindClassName);
Class bindClass = Class.forName(bindClassName);
method = bindClass.getMethod("bindView", target.getClass());
classMethodMap.put(target.getClass(), method);
}
method.invoke(null, target);
}catch (Exception e){
e.printStackTrace();
}
}
}
}
在使用的时候,稍微改一下。把BindXXXActivity.bindView 统一改成 MyButterKnife.bindView就可以了