butterknife的主要功能就是绑定。
本文我们先总结bufferknife的7个简单常用功能。
那么,我们开门见山,直接看用例。
(1)绑定view
@BindView(R.id.title) TextView title;
@BindView(R.id.subtitle) TextView subtitle;
@BindView(R.id.footer) TextView footer;
忘记findViewbyID()吧~
注:view对象不能为static或private.
(2)绑定resource
@BindString(R.string.title) String title;
@BindDrawable(R.drawable.graphic) Drawable graphic;
@BindColor(R.color.red) int red; // int or ColorStateList field
(3)绑定view集合
@BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;
(4)绑定onClick方法(花~式~)
方法名可以不再是onClick
@OnClick(R.id.submit)
public void submit(View view) {
// TODO submit data to server...
}
方法可以没有参数
@OnClick(R.id.submit)
public void submit() {
// TODO submit data to server...
}
可以组团绑定同一方法
@OnClick({ R.id.door1, R.id.door2, R.id.door3 })
public void pickDoor(DoorView door) {
if (door.hasPrizeBehind()) {
Toast.makeText(this, "You win!", LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Try again", LENGTH_SHORT).show();
}
}
(5)实现自定义view自我监听绑定
public class FancyButton extends Button {
@OnClick
public void onClick() {
// TODO do something!
}
}
(6)对于多方法的Listener
@OnTextChanged(value = R.id.et_Msg, callback = OnTextChanged.Callback.BEFORE_TEXT_CHANGED)
void beforeTextChanged(String sContent) {
//TODO
}
@OnTextChanged(value = R.id.et_Msg, callback = OnTextChanged.Callback.TEXT_CHANGED)
void onTextChanged(String sContent) {
//TODO
}
@OnTextChanged(value = R.id.et_Msg, callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
void afterTextChanged(String sContent) {
//TODO
}
(7)还有什么?
butterknife可不仅仅是绑定onClick或onTextChanged这么简单,它还能…
以上是bufferknife常用的7个功能。
还有一些功能相对(Xue Wei)复杂,包括
(1)对一组View进行统一操作
(2)可选绑定
(3)代码混淆
将在之后的总结中,一一记录。