Catatan ini khusus membahas mengenai cara menghandel event ListView ketika diklik (click triggered). Event yang akan digunakan untuk menghadel klik tersebut adalah
OnItemClickListener()
. Event Handler tersebut khusus menangani event ketika user melakukan klik pada item-item yang tersedia di dalam ListView.
Catatan ini dibuat untuk melanjutkan catatan sebelumnya mengenai Cara Menggunakan ListView di Android Studio. Asumsi umum dalam menulis catatan ini adalah pembaca diasumsikan telah bisa membuat ListView dengan adapter sederhana seperti yang dijelaskan pada catatan sebelumnya.
Cara Menghandel Event ListView Ketika Diklik
Cara yang digunakan untuk menghadel event ListView ada beberapa macam.
- Menghandel event ListView secara langsung di dalam method onCreate
- menghandel event ListView dengan cara membuat sebuah fungsi khusus (di dalam activity tetapi diletakkan di luar method onCreate) kemudian fungsi tersebut dipanggil dari method onCreate()
- Mengahdel event ListView dengan cara mengimplementasikan
OnItemClickListener()
Menghandel Event ListView di dalam Method onCreate()
Kode untuk menghandel event ListView langsung di method onCreate adalah sebagai berikut:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //event ketika diklik ditulis di sini } });
Contoh kode lengkapnya adalah sebagai berikut:
package com.nusagates.listview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { ListView listView; ArrayList<String> list = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView=(ListView)findViewById(R.id.listView); ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list); listView.setAdapter(arrayAdapter); list.add("List Satu"); list.add("List Dua"); list.add("List Tiga"); list.add("List Empat"); list.add("List Lima"); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "Anda memilih item "+list.get(position).toString(), Toast.LENGTH_SHORT).show(); } }); } }
Menghandel event ListView Menggunakan Sebuah Fungsi
Cara ini adalah dengan cara membuat sebuah fungsi kemudian fungsi tersebut di dalam method onCreate(). Cara ini sering aku gunakan ketika event yang harus dilakukan ketika item diklik cukup banyak sehingga tidak memenuhi bagian onCreate(). Contoh pembuatan fungsinya adalah sebagai berikut:
public void user_klik_item(){ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "Anda memilih item "+list.get(position).toString(), Toast.LENGTH_SHORT).show(); } }); }
Setelah fungsi tersebut dibuat selanjutnya dipanggil di dalam method onCreate() dengan mengetikkan kode
user_klik_item();
Kode Lengkapnya sebagai berikut:
package com.nusagates.listview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { ListView listView; ArrayList<String> list = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView=(ListView)findViewById(R.id.listView); ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list); listView.setAdapter(arrayAdapter); list.add("List Satu"); list.add("List Dua"); list.add("List Tiga"); list.add("List Empat"); list.add("List Lima"); user_klik_item(); } public void user_klik_item(){ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "Anda memilih item "+list.get(position).toString(), Toast.LENGTH_SHORT).show(); } }); } }
Menghandel event ListView Mengimplementasikan ListView.OnItemClickListener
Cara ini cukup simpel dan membuat struktur Activity kita lebih bagus karena dikelompokkan sesuai tempatnya. Cara menggunakan ini cukup mudah.
Pertama tambahkan
implements ListView.OnItemClickListener
pada deklarasi pembuatan class. Jika sudah ada implement tidak perlu ditambahkan implement lagi cukup pisahkan method-method tersebut dengan koma (,). Contoh:
implements View.OnClickListener, ListView.OnItemClickListener
Setelah itu tambahkan methode onItemClick di dalam class. Kode yang ditambahkan adalah sebagai berikut:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { }
Kode Lengkap cara handel event ListView menggunakan method ini adalah sebagai berikut:
package com.nusagates.listview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity implements ListView.OnItemClickListener{ ListView listView; ArrayList<String> list = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView=(ListView)findViewById(R.id.listView); ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list); listView.setAdapter(arrayAdapter); list.add("List Satu"); list.add("List Dua"); list.add("List Tiga"); list.add("List Empat"); list.add("List Lima"); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "Anda memilih item "+list.get(position).toString(), Toast.LENGTH_SHORT).show(); } }
Hasil eksekusi project bisa dilihat pada gambar di bawah:

Demikian catatan singkat mengenai Cara Menghandel Event ListView Ketika Diklik.