Android Opensources - ButterKnife, Lombok

15
Android Opensources Steven Kim (김우성) 1 Yooii Studios

description

How to use ButterKnife, Lombok, and how these change the way you code :)

Transcript of Android Opensources - ButterKnife, Lombok

Page 1: Android Opensources - ButterKnife, Lombok

Android OpensourcesSteven Kim (김우성)

���1 Yooii Studios

Page 2: Android Opensources - ButterKnife, Lombok

1. ButterKnife

2. Lombok

Yooii Studios���2

Page 3: Android Opensources - ButterKnife, Lombok

ButterKnife?

���3 Yooii Studios

Page 4: Android Opensources - ButterKnife, Lombok

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

• using Annotation Processing

• No more findViewById in Activity, View, ListAdapter etc.

• Simplify click listeners

ButterKnife

���4 Yooii Studios

Page 5: Android Opensources - ButterKnife, Lombok

ButterKnife - before at activity

class ExampleActivity extends Activity { TextView title; TextView subtitle; TextView footer ; ! @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); title = (TextView) findViewById(R.id.title); subtitle = (TextView) findViewById(R.id.subtitle); footer = (TextView) findViewById(R.id.footer); ! // TODO Use views... } }

���5 Yooii Studios

Page 6: Android Opensources - ButterKnife, Lombok

ButterKnife - after BuffetKnife at activity

class ExampleActivity extends Activity {

@InjectView(R.id.title) TextView title;

@InjectView(R.id.subtitle) TextView subtitle;

@InjectView(R.id.footer) TextView footer ;

! @Override public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.simple_activity);

ButterKnife.inject(this);

// TODO Use "injected" views...

}

}

���6 Yooii Studios

Page 7: Android Opensources - ButterKnife, Lombok

ButterKnife - after BuffetKnife at view

public class FancyFragment extends Fragment {

@InjectView(R.id.button1) Button button1;

@InjectView(R.id.button2) Button button2; ! @Override View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false);

ButterKnife.inject(this, view); // TODO Use "injected" views... return view; } }

���7 Yooii Studios

Page 8: Android Opensources - ButterKnife, Lombok

static class ViewHolder {

@InjectView(R.id.title) TextView name;

@InjectView(R.id.job_title) TextView jobTitle;

!

public ViewHolder(View view) {

ButterKnife.inject(this, view);

}

}

ButterKnife - after BuffetKnife at list adapter

���8 Yooii Studios

Page 9: Android Opensources - ButterKnife, Lombok

ButterKnife - after BuffetKnife at list adapter

public class MyAdapter extends BaseAdapter { @Override public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; view = inflater.inflate(R.layout.whatever, parent, false); ! holder = new ViewHolder(view); ! holder.name.setText("John Doe"); // etc... return convertView; static class ViewHolder { @InjectView(R.id.title) TextView name; @InjectView(R.id.job_title) TextView jobTitle; ! public ViewHolder(View view) { ButterKnife.inject(this, view); } } }

���9 Yooii Studios

Page 10: Android Opensources - ButterKnife, Lombok

Lombok ?

���10 Yooii Studios

Page 11: Android Opensources - ButterKnife, Lombok

• http://projectlombok.org/

• No more Getter / Setter!

Lombok

���11 Yooii Studios

Page 12: Android Opensources - ButterKnife, Lombok

Lombok - before Lombok

public class GetterSetterExample { private int age = 10; private String name; ! public int getAge() { return age; } public void setAge(int age) { this.age = age; } protected void setName(String name) { this.name = name; } }

���12 Yooii Studios

Page 13: Android Opensources - ButterKnife, Lombok

Lombok - after Lombok

public class GetterSetterExample {

@Getter @Setter private int age = 10;

@Setter(AccessLevel.PROTECTED) private String name;

}

���13 Yooii Studios

Page 14: Android Opensources - ButterKnife, Lombok

To be continued…• Android Annotations - Runtime DI(Dependency Injection)

- http://androidannotations.org/

• Robolectric (2.2+) - Testing - http://robolectric.org/

• Otto - Event handler using bus - http://square.github.io/otto/

���14 Yooii Studios

Page 15: Android Opensources - ButterKnife, Lombok

Thank you!

���15 Yooii Studios