ButterKnife View注入框架的使用

2022-07-25 08:27:08 字數 2177 閱讀 8671

作為一名android開發,是不是經常厭煩了大量的findviewbyid以及setonclicklistener**,而butterknife是乙個專注於android系統的view注入框架,讓你從此從這些煩人臃腫的**中解脫出來。先來看一段**示例說明下butterknife是如何簡化**的:

注意:如果你是使用的eclipse引用該library,你需要參考這裡eclipse configuration做一些配置,否則會執行出錯。

class exampleactivity extends activity 

}

而用butterknife之後的**是這樣的:

class exampleactivity extends activity 

}

是不是非常簡潔易用?下面就來系統的介紹下butterknife的用法。

支援 activity 中的 view 注入

支援 view 中的 view 注入

支援 view 事件**函式注入

目前支援如下事件**函式:

下面來看一些注入的示例**:

下面來看一些注入的示例**:

class exampleactivity extends activity 

}

public class fancyfragment extends fragment 

}

public class myadapter extends baseadapter  else 

holder.name.settext("john doe");

// etc...

return convertview;

} static class viewholder

}}

下面是幾種注入**函式的方法示例:

// 帶有 button 引數

@onclick(r.id.submit)

public void sayhi(button button)

// 不帶引數

@onclick(r.id.submit)

public void submit()

// 同時注入多個 view 事件

@onclick()

public void pickdoor(doorview door) else

}

如果需要在 介面 銷毀的時候,把注入的 view 設定為 null, 則可以用 reset 函式:

public class fancyfragment extends fragment 

@override void ondestroyview()

}

另外 還支援 可選的 view 注入,如果該 view 沒有,就沒有吧:

@optional @injectview(r.id.might_not_be_there) textview mightnotbethere;

@optional @onclick(r.id.maybe_missing) void onmaybemissingclicked()

還有兩個 findviewbyid 函式來簡化查詢 view 的方式,如果上面都滿足不了你的需求,你可以用用他們:

view view = layoutinflater.from(context).inflate(r.layout.thing, null);

textview firstname = views.findbyid(view, r.id.first_name);

textview lastname = views.findbyid(view, r.id.last_name);

imageview photo = views.findbyid(view, r.id.photo);

最後,如果你是用android studio來作為ide的話,那麼有乙個butterknife的外掛程式android-butterknife-zelezny, 該外掛程式可以讓你手動生成上述注入**,從此讓自己成為乙個更懶惰的程式設計師,上張截圖吧。

感謝分享:

依賴注入之Dagger2框架在工程中的使用

在介紹dagger2之前,了解一下使用dagger2的背景 一般情況下,例項man包含到例項car,則例項man依賴例項car。如下圖1 這種直接依賴的情況存在不好的情況,若car建構函式變化,則需要直接修改man類。使用依賴注入用於實現控制反轉的常用方式。控制反轉的基本思想是 借助 第三方 實現具...

SQL防注入SqlParameter的使用

概述 一般來說,在更新datatable 或是dataset 時,如果不採用 sqlparameter 那麼當輸入的 sql語句出現歧義時,如字串中含有單引號,程式就會發生錯誤,並且他人可以輕易地通過拼接 sql語句來進行注入攻擊。目的 防止sql 注入被攻擊。首先,先寫乙個沒有 sqlparame...

ASIHTTPRequest框架的簡單使用

asihttprequest是一款及其強勁的http訪問開源專案。讓簡單的api完畢複雜的功能,如 非同步請求,佇列請求,gzip壓縮。快取,斷點續傳,進度跟蹤,上傳檔案。http認證。在新版本號中,還增加了object c閉包block的支援,讓我們的 更加精簡靈活。依賴的5個庫 cfnetwor...