定义操作api
- [1]创建一个androidModule
- [2]定义findView的接口(多种findView所以做成接口 方便扩展)命名为ViewFinder
- [3]写一个activity的findview的实现类 命名为ActivityViewFinder
- [4]定义一个bindView接口(用于绑定view和解绑view)
- [5]写一个bindView的实现类
- [6]注意该module的gradle中jdk的版本也要一致 这里是7
public interface ViewFinder {
View findView(Object o,int id);
}
public interface ViewBinder<T> {
void bindView(T host,Object object,ViewFinder find);
void unBindView(T host);
}
public class ActivityViewFinder implements ViewFinder {
@Override
public View findView(Object o, int id) {
View view=((Activity)o).findViewById(id);
return ((Activity)o).findViewById(id);
}
}
public class LzfViewBinder {
private static final ActivityViewFinder activityFind=new ActivityViewFinder();
private static final Map<String,ViewBinder> binderMap=new LinkedHashMap<>();
public static void bind(Activity activity){
bind(activity,activity,activityFind);
}
private static void bind(Object host, Object object, ViewFinder finder) {
String className = host.getClass().getName();
try {
ViewBinder binder = binderMap.get(className);
if (binder == null) {
Class<?> aClass = Class.forName(className + "$$ViewBinder");
binder = (ViewBinder) aClass.newInstance();
binderMap.put(className, binder);
}
if (binder != null) {
binder.bindView(host, object, finder);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public static void unBind(Object host) {
String className = host.getClass().getName();
ViewBinder binder = binderMap.get(className);
if (binder != null) {
binder.unBindView(host);
}
binderMap.remove(className);
}
}
感谢
http://www.cnblogs.com/whoislcj/p/6168641.html