Standardowy kod, który trzeba napisać to rzecz, która sprawia radość tylko jak się pierwszy raz programuje 😉 Człowiek jest pełen pasji, odkrywa nowe rzeczy i wcale mu nie przeszkadza, że generuje lub pisze kolejny setter, czy powiela linijkę i zmienia tylko nazwy. Z czasem jednak coś zaczyna uwierać. Brzydko to potem wygląda, leży najczęściej na spodzie klasy, nikt tego nie czyta (bo i po co czytać auto-wygenerowane przez środowisko, gettery, settery itd). W Androidzie mamy jeszcze kilka rzeczy ponad standardowe, javowe instrukcje. A jak powszechnie wiadomo, co swoją drogą opisał już dawno temu Einstein:
compile 'com.jakewharton:butterknife:7.0.1'
TextView stackCounterTV = (TextView) findViewById(R.id.bricksTV);
@Bind(R.id.bricksTV) TextView stackCounterTV;
ButterKnife.bind(this);
@Bind({R.id.starIV1, R.id.starIV2, R.id.starIV3, R.id.starIV4, R.id.starIV5})
ImageView[] starContainer;
@OnClick(R.id.addingPlusBtn)
void add() { }
Nie musimy pisać metody onClick w xml, ani dodawać listenera na obiekcie. To wszystko, co potrzeba, żeby kliknięcie zadziałało. Możemy sobie jeszcze wywołać @onLongClick, do długich kliknięć, albo @onItemClick dla elementów typu listView.
Biblioteka radzi sobie także z fragmentami, trzeba jednak trochę zmienić standardową metodę na:
ButterKnife.bind(this, view);
Jeszcze kilka ciekawych funkcji z tej biblioteki:
@BindString(R.string.title) String title;
@BindDrawable(R.drawable.graphic) Drawable graphic;
@BindColor(R.color.red) int red;
Czyli pobranie grafiki, koloru, albo napisów w aktualnym języku (o ile jest obsłużony, jeśli nie, pobiera w języku aplikacji). Jak widać, znowu oszczędzamy sporo linii.
Wciąż mało? 😉
To na koniec coś dla ekstremalnie leniwych, czyli dodatek, który po kliknięciu skrótu „Generate code” wygeneruje nam to co potrzebujemy 😉 Nie działa w aktualnej wersji Android Studio, ale autor pracuje nad poprawką. Dodatek nazywa się android-butterknife-zelezny i znajduje się tutaj i tutaj.

















