Saturday, December 16, 2017

Menampilkan Data pada RecyclerView Android menggunakan FastAdapter

Untuk post saya kali ini, saya akan menjelaskan tentang FastAdapter.Sebelum saya membahas FastAdapter, saya akan menjelaskan apa itu RecyclerView.RecyclerView adalah versi yang lebih canggih dari ListView, yang berfungsi untuk menampilkan kumpulan data besar dengan sangat efisien.Sedangkan apa itu FastAdapter? FastAdapter adalah salah 1 library buatan mikepenz yang sangat berguna untuk membuat proses menulis data ke RecyclerView lebih mudah.

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