Mengidentifikasi Item di ListView Yang Dipilih

Contoh latihan berikut akan menunjukkan bagaimana membuat item di ListView yang bisa dipilih. Setelah memilih item, bagaimana kita bisa mengidentifikasi item mana saja yang dipilih. Berikut adalah contoh latihan bagaimana mengidentifikasi item-utem yang dipilih dari ListView.

1. Kita gunakan project yang sama dengan contoh latihan sebelumnya dan kita modifikasi file layout ‘activity_main.xml’ seperti berikut:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context="id.co.blogspot.diansano.viewdasar5.MainActivity">


<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Tampilkan item yang dipilih" />

<ListView
android:id="@+id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
2. Kita modifikasi file “MainActivity.java” seperti berikut:
package id.co.blogspot.diansano.viewdasar5;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity {

String[] pahlawan;

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

ListView listView = getListView();
//listView.setChoiceMode(ListView.CHOICE_MODE_NONE);
//listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setTextFilterEnabled(true);

pahlawan = getResources().getStringArray(R.array.array_pahlawan);

setListAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_checked, pahlawan));
}

public void onListItemClick(ListView listView, View view, int position, long id) {
if (listView.isItemChecked(position)) {
Toast.makeText(this, "Anda klik " + pahlawan[position],
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Anda batal klik " + pahlawan[position],
Toast.LENGTH_SHORT).show();
}
}

public void onClick(View view) {
ListView listView = getListView();

String itemselected = "Item yang dipilih: \n";
for (int i=0; iif (listView.isItemChecked(i)) {
itemselected += listView.getItemAtPosition(i) + "\n";
}
}
Toast.makeText(this, itemselected, Toast.LENGTH_LONG).show();
}
}
3. Jalankan di emulator Android Studio seperti pada gambar berikut




Penjelasan:

Dalam contoh latihan sebelumnya, kita sudah tahu bagaimana membuat data dengan ListView yang menempati seluruh layar penuh. Dalam contoh latihan itu kita tidak perlu menambahkan elemen <ListView> di dalam file layout ‘activity_main.xml’. Dalam contoh latihan ini kita sudah tahu bagaimana ListView bisa menempati layar tidak secara penuh. Untuk melakukan hal seperti ini, kita perlu menambahkan elemen <ListView> dengan atribut:id di set ke ‘@+id/android:list’ seperti berikut:
<ListView
android:id="@+id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Kemudian kita perlu me-load isi activity dengan menggunakan method ‘setContentView()’ (yang pada latihan sebelumnya kita komentarkan)”
setContentView(R.layout.activity_main);
Untuk mengidentifikasi item-item di dalam ListView yang sudah di-klik, kita menggunakan method ‘isItemChecked()’ seperti berikut:
ListView listView = getListView();

String itemselected = "Item yang dipilih: \n";
for (int i=0; iif (listView.isItemChecked(i)) {
itemselected += listView.getItemAtPosition(i) + "\n";
}
}
Toast.makeText(this, itemselected, Toast.LENGTH_LONG).show();
Method ‘getItemAtPosition()’ akan mengembalikan nilai suatu object, tetapi apabila kita menggunakan method ‘getItemIdAtPosition()’ kita akan mendapatkan ‘id’ yang dengan tipe data ‘long’.
Catatan:
Sejauh ini kita sudah menggunakan contoh-contoh latihan ‘ListView’ di dalam ‘ListActivity’. Ini tidak harus benar-benar seperti itu. Kita juga bisa menggunakan ‘ListView’ di dalam ‘Activity’. Dalam hal ini, kita membuat kode yang mengacu ke ‘ListView’, kita bisa menggunakan method ‘findViewById()’ sebagai ganti method ‘getListView()’, dan atribut ‘id’ dari elemen <ListView> bisa menggunakan format biasanya ‘@+id/<nama_view>'

No comments: