您的位置:首页 > 移动开发 > Android开发

Android 简化findViewById写法

2015-10-05 20:11 537 查看
今天给大家分享一下简化findViewById的写法,

大家在写代码的时候可能烦透了写 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获取,或者回复工具类

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: