不用在介面中再定義View 也不用再寫 findViewById 省掉一些介面並不需要的程式碼
之前一直在用ButterKnife也覺得挺好用的,只是最近在做專案模組化的時候發現在子模組之中的id並非為常量導致子模組所有註解報錯,雖然找到一些解決的辦法不過都比較麻煩,而且我覺得也有些曲線救國的感覺。於是我開始用起了最傳統的方法findViewById 結果就出現了 介面之中 一大堆的 View 定義 以及 一大堆的findViewById 的呼叫,這讓稍微有點強迫症的我並受不了。
例如這樣:
TextView textView;
ImageView ImageView;
ImageView ImageView;
ImageView ImageView;
void init(View view) {
textView = view.findViewById();
ImageView = view.findViewById();
ImageView = view.findViewById();
}
甚至更多 這樣我十分鬱悶。後來我想到在用Lombok 的時候 發現 這個外掛可以騙過編譯器讓編譯器認為該類已經有了get和set方法那為什麼不能讓我們的編譯器認為已經有了這些變數呢?這樣就利用Lombok的原始碼寫了這款外掛!雖然過程曲折不過最終還是弄出來了,目前用在我的專案中感覺還挺好!
來看看怎麼用吧!
比如這是你之前的程式碼:
這是用了這個外掛之後的程式碼:
是不是 text的定義沒有了 而packageName是你的資源目錄包名 value 是你layout的名稱
然後你需要將https://github.com/ivarxiong/jaina_compiler 下的 ':jaina_compiler', ':jaina_annotation', ':jaina_api' 這三個model匯入你的專案之中
然後再在dependencies 中加入這兩行就可以了
dependencies { compile project(':jaina_api') annotationProcessor project(':jaina_compiler') }
原理也就是外掛在編寫程式碼是讓ide 覺得有這些變數,而實際這些變數的產生是在編譯的過程中!
外掛的應用就是這樣了,感覺還是挺方便的。kotlin 請忽略,因為這個做法就是來源於kotlin,用過kotlin的你懂的!
歡迎大家一起交流,以及建議,有問題可以發我郵箱[email protected] 求大家在githup上給個星唄
最後,為了聯盟!