만족

[Android Studio] ButterKnife Libaray 본문

[Android Studio] ButterKnife Libaray

FrontEnd/Android Satisfaction 2018. 2. 22. 12:52

다른 라이브러리를 사용하지 않고, Java Code로 View에 Listener를 추가한다면

코드는 다음과 같은 형태가 될 것이다.


View exampleView= findViewById(R.id.exampelView);

exampleView.setOnClickListner(new View.OnClickListener(){

@Override

public void onClick(View view){

Toast.makeText(getApplicatiponContext(), "Click", Toast.LENGTH_LONG).show();

}

}


만약 exampleView를 현재 메소드에서만 사용하는 것이 아니라면 외부로 다시 빼내어서


View exampleView;

// Some Codes...

exampleView= findViewById(R.id.exampelView);

exampleView.setOnClickListner(new View.OnClickListener(){

@Override

public void onClick(View view){

Toast.makeText(getApplicatiponContext(), "Click", Toast.LENGTH_LONG).show();

}

}


가 될 것이다.


단순한 리스너를 추가하기만 하더라도 코드가 상당히 길어지기 때문에, 처리해야하는 VIew가 많아지거나

혹은 적은 수량이라도 가독성을 상당히 떨어뜨릴 수 있는 요인이다.


그러나 ButterKnife Library를 사용하면 코드량을 획기적으로 줄이고,

각각의 코드마다 역할을 간결하고 명확하게 나타낼 수 있어 코드 작성 시 많은 도움이 된다.


위의 코드에 ButterKnife를 이용하면 


//사실 BindView부분은 이 코드에서 필요없는 부분이기는 하다

@BindView(R.id.exampleView) View exampleView;

// Some Codes...

@OnClick(R.id.exampleView)

public void onClick(View view){

Toast.makeText(getApplicatiponContext(), "Click", Toast.LENGTH_LONG).show();

}


처럼 간단해진다.


물론 Annotation만 표기한다고 적용되는 것은 아니고


Bind해야하는 시점에 (예를 들면 onCreate) ButterKnife.bind(this); 를 호출해서 해당 값들을 할당해 주어야 한다.


먼저 ButterKnife 라이브러리를 프로젝트에 추가하기 위해


app 레벨의 gradle의 dependencies에 

compile 'com.jakewharton:butterknife:8.8.1'

를 추가한다



처럼 사용하면 된다.


BindView를 이용해 Binding한 변수는 반드시 ButterKnife.bind(this) 한 뒤에 사용해야 한다.


그 전에 사용하면 Binding 되지 않은 상태이기 떄문에 NullPointerException의 향연을 볼 수 있다.


또한 ButterKnife라이브러리를 사용하여 바인딩하는 메소드와 변수는 static이거나 private 일 수 없다는 점에 유의해야 한다.


------------------------------------------


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


더 알아보고 싶다면 개발자의 페이지를 읽어보면 된다.



Comments