Страницы

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

среда, 4 декабря 2019 г.

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

#java #android #аннотации #butterknife


Прочитал об аннотациях в Андроиде и наткнулся на такую либу - ButterKnife.

Какая польза от ее использования? Что она дает, кроме того, что заменяет метод findViewById?
    


Ответы

Ответ 1



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

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

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