欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

不需要ViewInject,简化你的findViewById,viewinject

来源: 开发者 投稿于  被查看 27043 次 评论:145

不需要ViewInject,简化你的findViewById,viewinject


这篇博客会非常非常短,大家在写代码的时候可能烦透了写 findViewById, 我也是, 这时大家可能会去选用一些利用注解写的ViewInject 去简化这个操作, 可是… 我非常不喜欢ViewInject

这时,我就想着自己去实现一下简化findViewById,简化后怎么用呢?看下面的代码,

TextView textView = V.f(this, R.id.textView);
ImageView imageView = V.f(convertView, R.id.image);

这种方式解决了两个问题,

 1. 简化了`findViewById` 这个长长的方法。
 2. 没有了会增加代码长度的类型转化。 

那我们应该怎么去实现这两个V.f 方法呢?其实很简单。

/**
 * view utils
 * @author loader
 *
 */
public class V {

    /**
     * activity.findViewById()
     * @param context
     * @param id
     * @return
     */
    public static <T extends View> T f(Activity context, int id) {
        return (T) context.findViewById(id);
    }

    /**
     * rootView.findViewById()
     * @param rootView
     * @param id
     * @return
     */
    public static <T extends View> T f(View rootView, int id) {
        return (T) rootView.findViewById(id);
    }
}

仅仅一行代码就搞定了,这里我们正是利用了java泛型方法的类型推导特点。

ok, 这篇博客就这么简单。大家copy代码尽情玩耍吧。

版权声明:本文来自Loader's Blog,未经博主允许不得转载。

相关频道:

用户评论