代码转载自:
http://www.eoeandroid.com/thread-541480-1-1.html
安卓中替换findviewbyid的方法:
@SuppressWarnings(“unchecked”)
public final <E extends View> E getView (int id) {
try {
return (E) findViewById(id);
} catch (ClassCastException ex) {
Log.e(TAG, “Could not cast View to concrete class.”, ex);
throw ex;
}
}
使用方法:
- TextView textView = getView(R.id.textview);
- Button button = getView(R.id.button);
- ImageView image = getView(R.id.imageview);
E指任意类型,泛型
<pre name="code" class="java">(E) findViewById(id)
这个代码实际已经帮你转化成你需要的类(该类是继承View的),而不需要你强制转类型
下面代码效果一样:
<span style="white-space:pre"> </span>public <V> V getview(int id) {
<span style="white-space:pre"> </span>return (V) findViewById(id);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>public <E extends View> E getview2(int id) {
<span style="white-space:pre"> </span>return (E) findViewById(id);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>public <T extends Object> T getview3(int id) {
<span style="white-space:pre"> </span>return (T) findViewById(id);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>public <K extends Object> K getview4(int id) {
<span style="white-space:pre"> </span>return (K) findViewById(id);
<span style="white-space:pre"> </span>}
即K、V、T、E效果一样