Прочитал об аннотациях в Андроиде и наткнулся на такую либу - ButterKnife.
Какая польза от ее использования? Что она дает, кроме того, что заменяет метод findViewById?
Ответ
Там не только
Button button = (Button) findViewById(R.id.button);
можно заменить на
@InjectView(R.id.button) Button mButton;
Но и колбеки инжектить.
Скажем:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// ...
}
});
превратится в:
@OnClick(R.id.button)
public void onButtonClick() {
// ...
}
В адаптерах упрощается код. Если вы писали свой адаптер для ListView, то должны были писать и ViewHolder для него. Когда въюх много, то очень не красиво и не удобно в holder закидывать элементы. С помощью ButterKnife это просто:
static class ViewHolder{
@InjectView(R.id.image_in_item)
ImageView image;
@InjectView(R.id.textview_in_item)
TextView text;
public ViewHolder(View view){
ButterKnife.inject(this, view);
}
}
Если вопрос именно в том, почему именно ButterKnife, а не, скажем, RoboGuice, то он компактнее. RoboGuice тянет много зависимостей и медленнее, ибо он в рантайме, а ButterKnife во время компиляции это делает.
Да и либу написал Jake Wharton. Это тот же, кто писал ActionBarSherlock и другие классные штуки.
UPD: как товарищ pavlofff верно заметил, в новых версиях библиотеки @InjectView был заменен на @Bind, плюс другие изменения были. Лучше смотреть сразу в репозитории библиотеки.
Комментариев нет:
Отправить комментарий