안녕세계
[라이브러리] Buttef Knife 8.4.0 본문
[라이브러리] Buttef Knife 8.4.0
Junhong Kim 2016. 11. 25. 12:16728x90
반응형
[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
반응형
'Client > Android' 카테고리의 다른 글
[안드로이드] Toolbar (0) | 2017.01.17 |
---|---|
[안드로이드] RecyclerView - Divider 생성 (0) | 2017.01.16 |
[안드로이드] RecyclerView With TabLayout (Feat. ViewPager) (0) | 2017.01.12 |
[안드로이드] SimpleDateFormat (날짜형식 변경) (0) | 2016.11.01 |
[라이브러리] Retrofit 1.9 사용법 (Android ↔ Node.js 통신) (0) | 2016.10.31 |
Comments