안녕세계

[라이브러리] Buttef Knife 8.4.0 본문

[라이브러리] Buttef Knife 8.4.0

Junhong Kim 2016. 11. 25. 12:16
728x90
반응형

[gradle 추가]

compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'

[Step 1] @BindView


- 기존 안드로이드에서 View를 바인딩할 때는 아래와 같이 하였습니다.

TextView textView = (TextView)findViewById(R.id.textView);

- 하지만 ButterKnife 라이브러리를 사용하면 아래와 같이 정의 후 Activity(또는 Fragment)에서 바인딩 처리하면 위 과정을 자동으로 수행합니다.

@BindView(R.id.textView)
TextView textView;

- View를 @BindView 어노테이션을 사용하여 선언한 뒤에 onCreate() 메서드에서 ButterKnife.bind(this)를 해줍니다.

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

ButterKnife.bind(this);
}



[Step 2] @OnClick 등의 어노테이션을 활용한 이벤트 처리


- 기존은 listener를 해당 View 달아주는 형식으로 아래와 같이 이벤트 처리하였습니다.

textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

}
});

- 아래와 같이 @OnClick 어노테이션을 활용하면 쉽게 이벤트를 구현할 수 있습니다.

- 여기서 sayHello()의 매개변수는 바인딩한 뷰의 타입이 반환되어 들어 옵니다. 

@OnClick(R.id.textView)
public void sayHello(TextView textView) {

}

- 사용하지 않아도 됨

@OnClick(R.id.textView)
public void sayHello() {

}






*Activity

setContentView(int id);

ButterKnife.bind(this);

class ExampleActivity extends Activity {
  @BindView(R.id.title) TextView title;
  @BindView(R.id.subtitle) TextView subtitle;
  @BindView(R.id.footer) TextView footer;

  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.bind(this);
    // TODO Use fields...
  }
}

*Fragment

View view = LayoutInflater.from(getActivity()).inflate(int id, null);

ButterKnife.bind(this, view)






http://jakewharton.github.io/butterknife/

https://github.com/JakeWharton/butterknife



728x90
반응형
Comments