不需要ViewInject,简化你的findViewById

Posted 亓斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不需要ViewInject,简化你的findViewById相关的知识,希望对你有一定的参考价值。

这篇博客会非常非常短,大家在写代码的时候可能烦透了写 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代码尽情玩耍吧。

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于不需要ViewInject,简化你的findViewById的主要内容,如果未能解决你的问题,请参考以下文章

Afinal

手机安全卫士——进程管理

FileUtils简化你的文件操作

afinal 文件上传下载图片加载实例

[译]使用Command模式和MediatR简化你的控制器

Android Sqlite 如果不存在则插入