不需要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代碼盡情玩耍吧。

發佈了82 篇原創文章 · 獲贊 782 · 訪問量 85萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章