這篇博客會非常非常短,大家在寫代碼的時候可能煩透了寫 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代碼盡情玩耍吧。