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.
0 Response to "Penggunaan Butter Knife Library Sebagai Viewbinding"
Posting Komentar