編輯:關於Android編程
在開發過程中,我們總是會寫大量的findViewById和點擊事件,像初始view、設置view監聽這樣簡單而重復的操作讓人覺得特別麻煩,當然不會偷懶的程序員不是好程序員,自然也出現了相應的解決方案–依賴注入。而ButterKnife則是依賴注入中相對簡單易懂的很不錯的開源框架,(其實ButterKnife也不算嚴格意義上的依賴注入,後面文章中會做分析)。但ButterKnife作為JakeWharton大神寫的注解框架被廣泛應用於android開發中,自然也有它的過人之處。下面對它的使用過程進行描述。
ButterKnife的具體使用,請參考文章
http://blog.csdn.net/itjianghuxiaoxiong/article/details/50177549
它的具體優勢:
1.強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率
2.方便的處理Adapter裡的ViewHolder綁定問題
3.運行時不會影響APP效率,使用配置方便
4.代碼清晰,可讀性強
3.1 依賴注入框架的區別的聯系:
其實主要在android中使用的依賴注入框架為Dagger、Butter Knife、RoboGuice、Android Annotations。這裡提供鏈接:
Android’s Options for Dependency Injection: Dagger, RoboGuice, and ButterKnife
對應的翻譯文章:Android依賴注入:Dagger、RoboGuice和ButterKnife.
3.2 當然,這種典型的問題當然少不了StackOverflow上去看看,
大概意思:
Buffer knife目的為注入到view,所以能夠在非activity裡面注入,也能注入到inflate的views裡面Dagger能夠注入到任何你想要的對象,只要其在module類中。或者它是構造器。但是缺少對方法和字段的注入支持。Buffer knife只是避免樣板代碼,findViewById,僅此而已,所以不能算是一個真正的注入。只是一個view的代言。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxoMyBpZD0="4butterknife使用中有哪些注意的點呢">(4)ButterKnife使用中有哪些注意的點呢?注意:
1. Activity ButterKnife.bind(this);必須在setContentView();之後,且父類bind綁定後,子類不需要再bind
2. Fragment ButterKnife.bind(this, mRootView);
3. 屬性布局不能用private or static 修飾,否則會報錯
4. setContentView()不能通過注解實現。
5. ButterKnife已經更新到版本7.0.1了,以前的版本中叫做@InjectView了,而現在改用叫@Bind,更加貼合語義。
6. 在Fragment生命周期中,onDestoryView也需要Butterknife.unbind(this)
7. ButterKnife不能再你的library module中使用哦!!這是因為你的library中的R字段的id值不是final類型的,但是你自己的應用module中確是final類型的。針對這個問題,有人在Jack的github上issue過這個問題,他本人也做了回答,點擊這裡。
(5)我還想更懶怎麼辦?
哈哈,這裡說的是添加插件,讓你寫代碼更快捷。
Zelezny插件的使用的使用能讓你變得更懶(也代碼更快)
5.1 怎麼使用插件?
zip操作符概述官方文檔描述:Returns an Observable that emits the results of a specified combiner f
今天工作中遇到的一個問題,需求是這樣的,需要給dz的論壇做一個android擴展,這肯定少不了會員登錄,就得需要二次開發dz提供一個登錄接口,眩暈中。。。 因為我對dz不
SwipeRefreshLayout概述 用戶通過手勢或者點擊某個按鈕實現內容視圖的刷新,布局裡加入SwipeRefreshLayout嵌套一個子視圖如ListView、
不知道你有麼有發現,來自菜鳥的成長史:http://blog.csdn.net/zjbpku/article/details/25161131, KitKat之後的版本不