Penggunaan Butter Knife Library Sebagai Viewbinding


Bismillaah,

Butter Knife merupakan sebuah library untuk menginjeksi view ke dalam activity atau fragment melalui anotation nya. Artinya, dengan injeksi view ini, kita tidak perlu lagi memakai findViewById() untuk menginisialisasi view object kita.

Selain injeksi view, juga ada beberapa fungsi annotation lain yang disediakan oleh butterknife, menyerupai contohnya kita dapat binding string, dimension, drawable, event dan lainnya.

Baik, berikut ini kita akan coba dan lihat beberapa kegunaan annotation butterknife untuk fasilitas ngoding kita.

Tambah Dependencies

Tambah dependencies berikut untuk memakai butterknife :

 dependencies {   compile 'com.jakewharton:butterknife:8.8.1'   annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' } 

Penggunaan (Activity)

Untuk kali ini kita akan mencoba 2 annotation, yaitu @BindView dan @OnClick.

Kita buat teladan layoutnya menyerupai berikut : 

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     android:padding="16dp">      <TextView         android:id="@+id/tv_name"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="Silahkan inputkan nama :" />      <EditText         android:id="@+id/edt_inputName"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:inputType="textPersonName"/>          <Button         android:id="@+id/btn_simpan"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="Simpan"/> </LinearLayout> 
Nah, biasanya kita akan menginisialisasi object view diatas dengan memakai findViewById(), tetapi dengan butter knife kita dapat mengganti nya dengan @BindView. Untuk menggunakannya, kita harus :

1. Menggunakan @BindView untuk menginisialisasi view dengan (R.id.namaid) 
2. Memanggil ButterKnife.bind(this) di dalam method onCreate().

 public class TestMain extends AppCompatActivity {      // penggunaan bindview     @BindView(R.id.tv_name)     TextView tvName;      @BindView(R.id.edt_inputName)     EditText edtInputName;      @Override     protected void onCreate(@Nullable Bundle savedInstanceState) {         super.onCreate(savedInstanceState);          // pertama bind dulu butterknife di dalam method onCreate()         ButterKnife.bind(this);     }      // penggunaan bindevent     @OnClick(R.id.btn_simpan)     public void onButtonClick(View view){         Toast.makeText(this, "Input Nama : " + edtInputName.getText().toString(),                 Toast.LENGTH_LONG).show();     } } 

Penggunaan (Fragment) 

Untuk penggunaan dalam fragment sama menyerupai di activity, bedanya hanya peletakan method ButterKnife.bind(this).

Selain itu kita juga membutuhkan object Unbinder untuk melepaskan binding butterknife ketika tidak diperlukan lagi, dalam hal ini kita akan meng-unbind di method onDestroyView(). 
 
 public class TestFragment extends Fragment {      Unbinder unbinder;      @BindView(R.id.tv_name)     TextView tvName;     @BindView(R.id.edt_inputName)     EditText edtInputName;     @BindView(R.id.btn_simpan)     Button btSimpan;      @Nullable     @Override     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {         View view = inflater.inflate(R.layout.test_layout, container, false);          // bind butterknife disini         unbinder = ButterKnife.bind(this, view);          return view;     }      @Override     public void onDestroyView() {         super.onDestroyView();         // unbind butterknife ketika viewfragment tidak dipakai lagi         unbinder.unbind();     } } 

Penggunaan di ViewHolder

Kita juga dapat menggunakannya di list adapter :

 public class MyAdapter extends BaseAdapter {   @Override public View getView(int position, View view, ViewGroup parent) {     .........     // any code   }    static class ViewHolder {     @BindView(R.id.title) TextView name;     @BindView(R.id.job_title) TextView jobTitle;      public ViewHolder(View view) {       ButterKnife.bind(this, view);     }   } } 

Macam - macam Listener Binding

Untuk binding listener, kita dapat memakai beberapa tipe parameter :

 // button dengan parameter view @OnClick(R.id.submit) public void submit(View view) {   // TODO submit data to server... }  // tanpa parameter @OnClick(R.id.submit) public void submit() {   // TODO submit data to server... }  // button dengan spesifik parameter view button @OnClick(R.id.submit) public void sayHi(Button button) {   button.setText("Hello!"); } 

Penggunaan Annotation lainnya 

Selain bindview dan bindevent, juga dapat untuk bind string, drawable, color dan lain-lain.
 public class TestMain extends AppCompatActivity {      // -- gloabl variabel lainnya      @BindDrawable(R.drawable.ic_launcher_background)     Drawable launcher;      @BindString(R.string.input_nama)     String inputNama;      @BindColor(R.color.janda_muda)     int jandaMuda;      @Override     protected void onCreate(@Nullable Bundle savedInstanceState) {         super.onCreate(savedInstanceState);          // pertama bind dulu butterknife di dalam method onCreate()         ButterKnife.bind(this);          // testing bind text dan color         tvName.setText(inputNama);         tvName.setTextColor(jandaMuda);     }     // --------------- any method } 
  Itulah beberapa annotation dan fungsi-fungsi nya dalam mempermudah kita dalam membinding view. Jika ada komplemen , pertanyaan atau lainnya, silahkan diskusi di kolom komentar..

Happy Coding. 

 


Sumber http://easyandroidindonesia.blogspot.com

Berlangganan Informasi Terbaru:

0 Response to "Penggunaan Butter Knife Library Sebagai Viewbinding"

Posting Komentar