Android:隨筆——取代findViewById

quincy發表於2017-02-28

轉載請標明地址 QuincySxhttp://www.jianshu.com/p/0e9f1348a872

在安卓中最噁心的一條語句莫過於findViewById(),還好有ButterKnife等注入框架來幫我們解決這個問題,今天給大家介紹一個小技巧在不借助第三方框架的情況下來優雅的解決這個問題(此片文章字數比較短)


我們今天用泛型的方法來解決findViewById()麻煩的問題,程式碼特別簡單直接上程式碼

private <T> T $(@IdRes int resid) {
        return (T) findViewById(resid);
    }

你沒有看錯就是這一句程式碼

其實在大家理解來看這樣寫就可以,但是呢由於只用到了T而沒有宣告,所以他會報錯,所以就有了上文的寫法

private T $(@IdRes int resid) {
        return (T) findViewById(resid);
    }

如果在類上加泛型就可以這樣寫了

public abstract class ColorfulActivity<T>{
    private T $(@IdRes int resid) {
        return (T) findViewById(resid);
    }
}

如果這樣寫的話就沒有任何問題了,還是推薦最上邊的寫法 簡單明瞭

用法

下面在說一下用法

TextView textView=$(R.id.text);
EditText editText=$(R.id.edit);

總結

這樣簡潔的語法,沒有複雜的轉型看著簡潔吧


相關文章