Android ButterKnife Example

In this tutorial we’re going to discuss the Android ButterKnife tool and look into it’s usages.

Android ButterKnife

Android Butterknife is a view binding tool that uses annotations to generate boilerplate code for us. ButterKnife is developed by Jake Wharton at Square and is essentially used to save typing repetitive lines of code like findViewById( when dealing with views, thus making our code look a lot cleaner.

ButterKnife Android Dependency

To use ButterKnife in android application we need to add the following dependency to our build.gradle file.

compile 'com.jakewharton:butterknife:6.1.0'

Android ButterKnife inject

Before using any views, we need to inject ButterKnife by adding below code in onCreate() method of the activity.


Note: When using fragments we need to specify the source of the view in the onCreateView() as below.

View view = inflater.inflate(R.layout.sample_fragment, null);
ButterKnife.inject(this, view);

Android ButterKnife Example

A simple activity example with ButterKnife is shown below.

public class MainActivity extends Activity {
  @InjectView( TextView textView;
  @InjectView( Button button;
  public void onCreate(Bundle savedInstanceState) {
    textView.setText("You can change this view accordingly");
    void buttonClick() {
    // don't even need the line @InjectView( if this button isn't being used else where

In the above code snippet, @OnClick is the ButterKnife annotation that removes the need for the setOnClickListener method. The method below is automatically configured to that annotation. An argument inside the method is optional.

We can specify multiple IDs in a single binding for common event handling as shown below.

@OnClick({,, })
public void commonMethod(Button button) {
  button.setText("Text specified here would be same for all");

In the above code a specific type of view (Button) is automatically casted.

An example of implementing ButterKnife in fragments is given below.

public class SomeFragment extends Fragment {
    TextView textView;
    public View onCreateView(LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater
                .inflate(R.layout.some_layout, container, false);
        ButterKnife.inject(this, rootView);
        //Work on the TextView
        return rootView;
    @OnClick({, })
    public void doSomething() {
        //Do something when imageView or someTextView is clicked.
    public void onDestroyView() {
        //Set views to null:

For a ListView itemClick the following annotation is used.

void onItemSelected(int position) {
  // TODO ...

Note: An exception will be raised if the target view is not found. To suppress this exception we can add a @Nullable annotation, thereby making it an optional binding.

This brings an end to ButterKnife in android short tutorial. For a complete example, please read Android Notification.

Reference: ButterKnife at GitHub

By admin

Leave a Reply

%d bloggers like this: