ButterKnife 다들 많이 사용하시나요?
저는 왠만하면 안드로이드 순정 라이브러리를 사용하려 노력하는 편이지만,
이것만은 계속 쓰게 되더군요!
바로 ButterKnife 라고 쓰고 버터나이프라고 읽는 라이브러리 인데요,
이게 어디에 써먹는거냐면
activity를 생성하고 layout 과 연결시켜준 뒤,
반드시 widget 들을 findViewId 로 일일히 할당해줘야 하는 수고가 필요한데요.
ButterKnife는 변수 선언과 동시에 할당을 해줍니다!
예를 들어보면 기존에는
private TextView tvTitle;
private TextView tvName;
private TextView tvRank;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
init();
}
private init() {
mTextView = findViewById(R.id.tvTitle);
tvName = findViewById(R.id.tvName);
tvRank = findViewById(R.id.tvRank);
}
위의 코드 처럼 반드시 widget 들을 초기화 해주는 코드가 들어가야 하지요.
아.. 지저분합니다.. UI가 복잡할 수록 저거 정말 지저분해보여요.
하지만 ButterKnife 를 사용하면 매우 깔끔해집니다.
@BindView(R.id.tvTitle);
private TextView tvTitle;
@BindView(R.id.tvName);
private TextView tvName;
@BindView(R.id.tvRank);
private TextView tvRank;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
}
위의 코드처럼 어노테이션을 사용해서 변수와 ViewId 와 연결시켜 놓고,
적절한 위치에 ButterKnife.bind(this); 만 해주면 알아서 객체가 메모리에 할당되게 됩니다.
참 쉽고 깔끔하죠!
뿐만 아니라 drawable 리스소도 어노테이션 한방으로 할당이 가능하구요~
@BindString(R.string.title) String title;
@BindDrawable(R.drawable.graphic) Drawable graphic;
@BindColor(R.color.red) int red; // int or ColorStateList field
각종 listener 도 깔끔하게 등록이 가능합니다~
@OnClick(R.id.submit)
public void submit(View view) {
// TODO submit data to server...
}
더 자세한 예제와 사용방법등을 알고 싶으시다면 아래 url 로 이동하셔서 보시면 됩니다.ㅎㅎ
http://jakewharton.github.io/butterknife/
이미 많은 분들이 알고 계실 수도 있지만 혹시 모르고 계신 분이 계시면 도움이 되실까 해서 올려봅니다~
감사합니다!
서영승 7년전 질문