Oke, tanpa panjang lebar kita akan langsung menuju contoh kodenya.
Langkah pertama adalah kita masukin gradle FastAdapter ke dalam projek
// https://mvnrepository.com/artifact/com.mikepenz/fastadapter
compile group: 'com.mikepenz', name: 'fastadapter', version: '3.0.4'
// https://mvnrepository.com/artifact/com.mikepenz/fastadapter-commons
compile group: 'com.mikepenz', name: 'fastadapter-commons', version: '3.0.3'
Oh iya, karena untuk contoh kita kali ini kia menggunakan butterknife, kita akan tambahkan gradle butterknife ke projek ini
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
Dan 1 lagi, karena kita juga bermain dengan library dari mikepenz yang lain, kita tambahkan juga gradle :
// https://mvnrepository.com/artifact/com.mikepenz/materialdrawer
compile group: 'com.mikepenz', name: 'materialdrawer', version: '6.0.0'
Langkah berikutnya kita buat file idx.xml di folder res
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="member_id" type="id" />
</resources>
Kemudian kita buat modelnya, untuk kasus ini kita buat kelas Member.java
public class Member extends AbstractItem<Member, Member.ViewHolder> {
private String uid;
private String name;
public Member(String uid, String name) {
this.uid = uid;
this.name = name;
}
public String getUid() {
return uid;
}
public String getName() {
return name;
}
@Override
public ViewHolder getViewHolder(View v) {
return new ViewHolder(v);
}
@Override
public int getType() {
return R.id.member_id;
}
@Override
public int getLayoutRes() {
return R.layout.adapter_member;
}
protected static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.id)
AppCompatTextView id;
@BindView(R.id.name)
AppCompatTextView name;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
@Override
public void bindView(ViewHolder holder, List<Object> payloads) {
super.bindView(holder, payloads);
StringHolder.applyTo(new StringHolder(getUid()), holder.id);
StringHolder.applyTo(new StringHolder(getName()), holder.name);
}
@Override
public void unbindView(ViewHolder holder) {
super.unbindView(holder);
holder.id.setText(null);
holder.name.setText(null);
}
}
Wait...what? Kenapa di dalam objeknya extends AbstractItem? Di sini lah perbedaannya, jika menggunakan Adapter RecyclerView seperti biasanya, akan 2 kelas yang dibuat yaitu Recylerview Adapter dan modelnya. Kalau menggunakan FastAdapter maka kelas modelnya akan menjadi 1 dengan adapternya.
Untuk pemanggilan adapternya adalah seperti ini :
public class MainActivity extends AppCompatActivity {
@BindView(R.id.member_list)
RecyclerView memberList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
FastItemAdapter<Member> memberAdapter = new FastItemAdapter<>();
memberList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
memberList.setAdapter(memberAdapter);
memberList.setNestedScrollingEnabled(false);
memberAdapter.add(new Member("123", "Pelaku A"));
memberAdapter.add(new Member("456", "Pelaku B"));
memberAdapter.add(new Member("789", "Pelaku C"));
}
}
Dan untuk hasilnya seperti ini :
Lebih mudah dibandingkan cara biasa untuk menampilkan recylerview bukan?Karena itulah namanya FastAdapter :D
Sekian dari post saya kali ini.Jika ada kesalahan, mohon bantu untuk perbaikannya..he
Referensi :
https://github.com/mikepenz/FastAdapter
No comments:
Post a Comment