Blog Edinofri

Blog pribadi berisikan memory tentang pembelajaran Pemograman Android, Website, Blogger, Life hack, Curhatan dan beberapa artikel tidak jelas. Blog ini lebih fokus di pemograman Android terutama pengembangan aplikasi android menggunakan Android Studio.

27 May 2016
Komentar 0
Kali ini saya akan membahas mengenai Bind View tanpa menggunakan findViewById pada project Android Studio yang sedang kita kerjakan. Kita tahu bahwa untuk mendapatkan dan mengubah text, ukuran, atau menambahkan listener pada komponen yang kita miliki seperti EditText, Textview, Button ataupun komponen-komponen view lainnya.

Pastinya kita harus mengikat komponen yang kita miliki dengan findViewById(R.id.xyz), Belum lagi kita harus mengcasting dia sesuai komponen view nya.
Misalnya seperti EditText
EditText mTxtHello = (EditText)findViewById(R.id.hello);
Pernah disuatu kesempatan saya pun menemukan sebuah trik memperpendek pengikatan komponen yang kita miliki ini dengan Library ButterKnife, belum selesai hanya di BindView saja, ButterKnife ini bisa kita gunakan untuk membuat kode untuk Listener OnClick dan OnLongClick yang akan saya bahas di artikel selanjutnya nanti.

Untuk kali ini saya hanya membahas untuk mengikat komponen-komponen yang kita miliki dengan menggunakan Butterknife baik itu pada Activity (untuk Fragment dan ViewHolder anda bisa ikutin parameter saat melakukan ButterKnife.bind(Object,View) ).

Silahkan buat New Project di Android Studio yang kalian miliki, lalu pada layout activity_main.xml silahkan gantikan seluruh kode yang ada dengan kode saya dibawah ini.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnKlikSaya"
        android:text="Belajar ButterKnife"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World"
        android:id="@+id/txtHello"/>
</LinearLayout>

Sebelum kita mengikat viewnya dengan ButterKnife, terlebih dahulu kita menaruh depedencies pada gradle app.
Disini saya menggunakan ButterKnife Versi 8.0.1, pada versi ini banyak terjadi perubahan Method dan penambahan-penambahan baru, bila ingin mengintip versi-versi dari Butter Knife silahkan lirik ke sini
Silahkan buat gradle app anda seperti dibawah ini.
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "android.belajar.butterknifebindview"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}
apply plugin: 'com.neenbedankt.android-apt'
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.jakewharton:butterknife:8.0.1'
    apt 'com.jakewharton:butterknife-compiler:8.0.1'
}

Setelah itu silahkan sisikan Kode ButterKnife.bind(this); pada OnCreate(Bundle ....){}, selanjutnya anda bisa menaruhkan kode @BindView(R.id.txtHello) TextView txtHello;, sisipkan sebelum  @Override OnCreate(..). 

Selanjutnya kita akan membuat listener OnClick untuk Button yang kita miliki dengan cara menambah kan @OnClick(R.id.btnKlikSaya)dan membuat sebuah prosedure public dengan nama yang anda inginkan. 

Lalu Sisipkan setTitle(txtHello.getText().ToString());, kode yang akhirnya adalah seperti dibawah ini. 
package android.belajar.butterknifebindview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.txtHello) TextView txtHello;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }
    @OnClick(R.id.btnKlikSaya)
    public void tekanSaya(){
        setTitle(txtHello.getText().toString());
    }
} 
Bila kita tidak menggunakan ButterKnife maka kodenya akan seperti ini.

package android.belajar.butterknifebindview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity { 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        final TextView txtHello = (TextView)findViewById(R.id.txtHello);
        Button btnKlikSaya = (Button)findViewById(R.id.btnKlikSaya);
        btnKlikSaya.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setTitle(txtHello.getText().toString());
            }
        });
    } 
}

Sekian saja untuk kali ini membahas ButterKnife-nya lain kesempatan akan saya sempatkan untuk membuat artikel selanjutnya mengenai ButterKnife.

No comments:

Post a Comment