Android Opensources - ButterKnife, Lombok
-
Upload
wooseong-kim -
Category
Technology
-
view
655 -
download
1
description
Transcript of Android Opensources - ButterKnife, Lombok
![Page 1: Android Opensources - ButterKnife, Lombok](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/1.jpg)
Android OpensourcesSteven Kim (김우성)
���1 Yooii Studios
![Page 2: Android Opensources - ButterKnife, Lombok](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/2.jpg)
1. ButterKnife
2. Lombok
Yooii Studios���2
![Page 3: Android Opensources - ButterKnife, Lombok](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/3.jpg)
ButterKnife?
���3 Yooii Studios
![Page 4: Android Opensources - ButterKnife, Lombok](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/4.jpg)
• 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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/10.jpg)
Lombok ?
���10 Yooii Studios
![Page 11: Android Opensources - ButterKnife, Lombok](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/11.jpg)
• http://projectlombok.org/
• No more Getter / Setter!
Lombok
���11 Yooii Studios
![Page 12: Android Opensources - ButterKnife, Lombok](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052522/554f82e8b4c905d25b8b4b10/html5/thumbnails/15.jpg)
Thank you!
���15 Yooii Studios