Menangani Event pada View

Pada latihan sebelumnya beberapa view yang kita coba tidak akan merespon bila kita klik. Berikut adalah contoh latihan bagaimana menangani event pada View ketika di-klik.

1. Kita masih menggunakan project yang sama dengan latihan sebelumnya

2. Kita modifikasi dan tambahkan kode berikut pada file utama “MainActivity.java” seperti berikut:
package id.co.blogspot.diansano.viewdasar;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

/*Button Buka*/
Button btnBuka = (Button) findViewById(R.id.btnBuka);
btnBuka.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DisplayToast("Anda telah klik tombol Buka");
}
});

/*Button Simpan*/
Button btnSimpan = (Button)findViewById(R.id.btnSimpan);
btnSimpan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DisplayToast("Anda telah klik tombol Simpan");
}
});

/*CheckBox*/
CheckBox checkBox = (CheckBox)findViewById(R.id.chkSimpanOtomatis);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (((CheckBox)view).isChecked())
DisplayToast("CheckBox telah di-check");
else
DisplayToast("CheckBox tidak di-check");
}
});

/*RadioButton*/
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rdGroup1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton rb1 = (RadioButton) findViewById(R.id.rdb1);
if (rb1.isChecked())
DisplayToast("Opsi 1 di-check");
else
DisplayToast("Opsi 2 di-check");
}
});

/*ToggleButton*/
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle1);
toggleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (((ToggleButton)view).isChecked())
DisplayToast("Toggle button sedang On");
else
DisplayToast("Toggle button sedang Off");
}
});

}

private void DisplayToast(String pesan) {
Toast.makeText(this, pesan, Toast.LENGTH_SHORT).show();
}
}
3. Jalankan pada emulator Android Studio dan kemudian klik beberapa view yang sudah terhubung dengan ‘Event Listener’.

Penjelasan:

Untuk menangani event yang dipicu oleh tiap-tiap view, kita harus terlebih dahulu menunjuk view tersebut pada method ‘onCreate()’ dengan menggunakan method ‘findViewById()’ (yang merupakan method dari class Activity), dan memasok dengan ID dari view tersebut.
/*Button Buka*/
Button btnBuka = (Button) findViewById(R.id.btnBuka);
Method ‘setOnClickListener()’ akan menghubungkan pada method yang akan dipanggil nanti bila view tersebut di-klik:
btnBuka.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DisplayToast("Anda telah klik tombol Buka");
}
});

Method ‘onClick()’ dipanggil bila view tersebut di-klik.

Untuk menentukan status ‘CheckBox’, kita harus mengubah argumen pada method ‘onClick()’ menjadi ‘CheckBox’ dan kemudian mengujinya dengan method ‘isChecked()’ untuk melihat apakah c’CheckBox’ tersebut di-check atau tidak:
/*CheckBox*/
CheckBox checkBox = (CheckBox)findViewById(R.id.chkSimpanOtomatis);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (((CheckBox)view).isChecked())
DisplayToast("CheckBox telah di-check");
else
DisplayToast("CheckBox tidak di-check");
}
});
Untuk RadioButton, kita perlu menggunakan method ‘setOnCheckedChangeListener()’ pada RadioGroup untuk terhubung dengan method yang akan dipanggil bila RadioButton di dalam group di-check :
/*RadioButton*/
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rdGroup1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton rb1 = (RadioButton) findViewById(R.id.rdb1);
if (rb1.isChecked())
DisplayToast("Opsi 1 di-check");
else
DisplayToast("Opsi 2 di-check");
}
});
Ketika RadioButton dipilih, method ‘onCheckedChanged dipanggil. Di dalamnya kita cari dan temukan RadioButton dan kemudian memanggil method ‘isChecked’ untuk menentukan RadioButton mana yang dipilih. Cara lainnya, method ‘onCheckedChanged()’ berisi argumen kedua yang berisi id unique dari RadioButton dipilih.

Untuk ToggleButton cara kerjanya sama dengan CheckBox.

Sampai disini, untuk menangani event pada view, kita terlebih dahulu harus mendapatkan referensi ke view dan kemudian menghubungkannya ke method yang akan menanganinya. Ada cara lain untuk menangani event selain cara di atas. Misalkan kita gunakan contoh mengggunakan ‘Button’, kita bisa menambahkan atribut ‘onClick’ seperti berikut:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="simpan"
android:id="@+id/btnSimpan"
Android:onClick=”onClick”/>
Atribut ‘onClick’ akan menentukan event dari button tersebut. Nilai dari atribut ini adalah nama dari event yang akan menanganinya. Karen aitu, untuk menangani event dari button tersebut kita perlu membuat method ‘onClick()’ di dalam file “MainActivity.java” seperti berikut:
@Override
public void onClick(View view) {
DisplayToast("Anda telah klik tombol Simpan");
}
Cara yang kedua ini jauh lebih mudah dan lebih sederhana dibanding dengan cara yang pertama.

No comments: