Android 简化findViewById写法
2015-10-05 20:11
537 查看
今天给大家分享一下简化findViewById的写法,
大家在写代码的时候可能烦透了写 findViewById, 当然我们也可以利用相关注解框架来简写,比如ViewInject 去简化这个操作。
至于用ViewInject性能方面,这里不做介绍。
自定义一个ViewUtil类
使用
TextView textView = ViewUtil.findViewById(this, R.id.textView);
ImageView imageView = ViewUtil.findViewById(convertView, R.id.image);
这样利用了java泛型方法的类型推导特点,好处
1. 简化了`findViewById写法
2. 没有了会增加代码长度的类型转化。
这样就ok了。
如果我们想隐藏多个控件
可以在ViewUtil类中加上hide方法
/**
* 隐藏控件
*
* @param activity
* @param resourdId
*/
public static void hide(Activity activity, int...
resourdIds) {
for (int id : resourdIds) {
View view = activity.findViewById(id);
if (view != null) {
view.setVisibility(View.GONE);
}
}
}
public static void hide(View parent, int... resourdIds)
{
for (int id : resourdIds) {
View view = parent.findViewById(id);
if (view != null) {
view.setVisibility(View.GONE);
}
}
}
如果想显示,编写show方法
public static void show(Activity activity, int...
resourdIds) {
for (int id : resourdIds) {
View view = activity.findViewById(id);
if (view != null) {
view.setVisibility(View.VISIBLE);
}
}
}
赋值方法:
public static void setText(Activity activity,int
textViewId,String text){
if(activity ==null) return;
TextView textView = (TextView)activity.findViewById(textViewId);
if (textView!=null){
setText(textView,text);
}
}
public static void setText(TextView textView,String
text){
textView.setText(text);
}
获取值方法:
public static String getText(TextView view) {
return view.getText().toString();
}
public static String getText(Activity activity,
int viewId) {
return getText((TextView) activity.findViewById(viewId));
}
其他改变背景,设置输入状态,清除等相关方法写在ViewUtil类中,如需具体源码,请回复ViewUtil获取,或者回复工具类
大家在写代码的时候可能烦透了写 findViewById, 当然我们也可以利用相关注解框架来简写,比如ViewInject 去简化这个操作。
至于用ViewInject性能方面,这里不做介绍。
自定义一个ViewUtil类
public class ViewUtil { /** * activity.findViewById() * @param context * @param id * @return */ public static <T extends View> T findViewById(Activity context, int id){ return (T) context.findViewById(id); } /** * rootView.findViewById() * @param rootView * @param id * @return */ public static <T extends View> T findViewById(View rootView, int id) { return (T) rootView.findViewById(id); } }
使用
TextView textView = ViewUtil.findViewById(this, R.id.textView);
ImageView imageView = ViewUtil.findViewById(convertView, R.id.image);
这样利用了java泛型方法的类型推导特点,好处
1. 简化了`findViewById写法
2. 没有了会增加代码长度的类型转化。
这样就ok了。
如果我们想隐藏多个控件
可以在ViewUtil类中加上hide方法
/**
* 隐藏控件
*
* @param activity
* @param resourdId
*/
public static void hide(Activity activity, int...
resourdIds) {
for (int id : resourdIds) {
View view = activity.findViewById(id);
if (view != null) {
view.setVisibility(View.GONE);
}
}
}
public static void hide(View parent, int... resourdIds)
{
for (int id : resourdIds) {
View view = parent.findViewById(id);
if (view != null) {
view.setVisibility(View.GONE);
}
}
}
如果想显示,编写show方法
public static void show(Activity activity, int...
resourdIds) {
for (int id : resourdIds) {
View view = activity.findViewById(id);
if (view != null) {
view.setVisibility(View.VISIBLE);
}
}
}
赋值方法:
public static void setText(Activity activity,int
textViewId,String text){
if(activity ==null) return;
TextView textView = (TextView)activity.findViewById(textViewId);
if (textView!=null){
setText(textView,text);
}
}
public static void setText(TextView textView,String
text){
textView.setText(text);
}
获取值方法:
public static String getText(TextView view) {
return view.getText().toString();
}
public static String getText(Activity activity,
int viewId) {
return getText((TextView) activity.findViewById(viewId));
}
其他改变背景,设置输入状态,清除等相关方法写在ViewUtil类中,如需具体源码,请回复ViewUtil获取,或者回复工具类
相关文章推荐
- 如何解决ViewPager中的预加载
- Android 自定义圆形头像
- Android任务流调度 - Init
- android自定义组件的简易实现
- android自定义组件的简易实现
- Android-----test----monkeyrunner
- [转]Android中自定义checkbox样式
- 浅谈android的selector,背景选择器
- android-线程 (从java开始)案例
- Android打开/关闭蓝牙封装工具类
- Android-它们的定义Dialog
- Android Studio + NDK
- Android 自定义View (一)
- Ubuntu 15.04 中 Android 5.0+ 编译
- 一篇介绍android最新组件的好文
- Android学习笔记之游标访问SQLite数据
- android 处理空listview
- android--窗口去掉标题栏和状态栏
- 实现android gif图片动画播放功能
- 笔记:学习 Android-BroadcastReceiver