Страницы

Поиск по вопросам

среда, 10 октября 2018 г.

Использование ButterKnife

Прочитал об аннотациях в Андроиде и наткнулся на такую либу - 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, плюс другие изменения были. Лучше смотреть сразу в репозитории библиотеки.

Комментариев нет:

Отправить комментарий