Blog

안드로이드 라이브러리 Butter Knife

May 12, 2014

안드로이드 라이브러리 Butter Knife

버터나이프라는 이름의 라이브러리는 뭘까 궁금해서 봤는데
자바의 어노테이션을 이용해서 안드로이드 코드의 간결화를 도와주는 라이브러리입니다.

반복적인 코드들을 보면 지저분하다라는 느낌을 많이 받는데 버터나이프를 사용하면 반복코드들을 생략가능합니다.

Activitiy에서 뷰를 참조할 때 여러개가 되면 이런식으로 onCreate() 메소드 안에서 하드코딩(?) 해야하지만

textView1 = (TextView) findViewById(R.id.text1);
textView2 = (TextView) findViewById(R.id.text2);
textView3 = (TextView) findViewById(R.id.text3);
textView4 = (TextView) findViewById(R.id.text4);
textView5 = (TextView) findViewById(R.id.text5);
textView6 = (TextView) findViewById(R.id.text6);
textView7 = (TextView) findViewById(R.id.text7);
textView8 = (TextView) findViewById(R.id.text8);

버터나이프를 사용하면

@InjectView(R.id.textview) TextView textView;
@InjectView(R.id.textview1) TextView textView1;
@InjectView(R.id.textview2) TextView textView2;
@InjectView(R.id.textview3) TextView textView3;
@InjectView(R.id.textview4) TextView textView4;
@InjectView(R.id.textview5) TextView textView5;
@InjectView(R.id.textview6) TextView textView6;
@InjectView(R.id.button) Button button;

@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ButterKnife.inject(this);
textView.setText("Hello World!!");
}

@OnClick(R.id.button) void onButtonClick() 
textView.setText("Click Button!!");
}

onCreate에서 할당하지 않고 전역에서 @InjectView() 어노테이션을 사용해서 할당하게 됩니다. 버튼의 경우 onClick 이벤트를 어노테이션 방식으로 줄 수 있습니다.

setOnClickListener 같은 리스너 등록도 필요없고 ButterKnife 클래스안에 인젝션만 하면 모두 등록됩니다 :)

안드로이드스튜디오 안에 내장되어있는 라이브러리 이니까 한번씩 사용해보세요 ^^

자세하고 더 많은 설명은 여기로