对于findViewById()这个方法相信每个Android开发工程师都很熟悉,没有技术含量,但又必不可少。在开发过程中大量的findViewById()让工程师们烦不胜烦,为了减少一些代码,该文运用Java的泛型简化这个方法。
public static T findView(Activity context, int id) {
try {
return (T) context.findViewById(id);
} catch (ClassCastException ex) {
Log.e("", "Could not cast View to concrete class.", ex);
throw ex;
}
}
这个方法的使用场景是在Activity中,这个方法可以写在BaseActivity中,然后每个Activity继承自BaseActivity,这样在绑定控件的时候直接用这个方法代替findViewById(),减少繁琐的类型转换。
public static T findView(View rootView, int id) {
try {
return (T) rootView.findViewById(id);
} catch (ClassCastException ex) {
Log.e("", "Could not cast View to concrete class.", ex);
throw ex;
}
}
这个方法的使用场景是非Activity,当需要有一个根View的时候调用此方法来代替findViewById()。
当然还有很多方式可以减少findViewById()的书写,例如注解,Android Studio插件Android Butterknife Zelezny等等,这些方式各有利弊,读者可自行选择。特别提示:使用注解会影响性能。详情请自行查阅。
网友评论