Tutorial Android : Menampilkan Context Menu Dari ListView Yang Terseleksi

Kemarin malam saya nginap di ITSolution, lantaran malas pulang karena koneksi modem di rumah kurang bersahabat. Sekalian juga supaya bisa puas begadang nyoba-nyoba buat aplikasi untuk android, yaw walaupun belum sampai ke level advanced. Dan malam ini kembali lagi ke rumah, setelah si modem bisa kembali berjalan normal. Berhubung si modem sudah agak normal, malam ini saya akan melanjutkan postingan tentang android yang kemarin. Masih berhubungan dengan context menu, hanya saja saya gabungkan dengan sebuah listview. Studi kasusnya terbilang sederhana, yaitu menampilkan context menu dari salah satu pilihan di listview yang terseleksi. “Contohnya seperti apa sih…???”. Contoh umumnya seperti yang terdapat di aplikasi File Manager (android), file-file ditampilkan ke dalam sebuah listview. Ketika salah satu pilihan disentuh+tahan agak lama, maka akan muncul pilihan untuk melakukan operasi pada pilihan yang kita sentuh tadi. “Masih pusing atau bingung…???”. Yaw udah, kita langsung aja ke cara pembuatannya, cekidot gan….

1. Seperti biasa (dan memang harus dibiasakan :D) buat android project baru, detailnya seperti gambar di bawah ini :

2. Buka dan edit file main.xml, ketikkan kode layout di bawah ini :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
   	android:textSize="15sp"
  >
  <ListView
    android:id="@+id/list"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:drawSelectorOnTop="false"
    />
</LinearLayout>

3. Kita lanjutkan ke activity-nya. Ada berbagai cara yang bisa digunakan untuk menampilkan data-data ke dalam listview. Ada yang menaruhnya di dalam file strings.xml (res > strings.xml), dengan cara tersebut menurut saya akan kesulitan jika kita ingin menampilkan data dari database. Maka dari itu, saya taruh data-data yang akan ditampilkan di listview ke dalam sebuah array menjadi satu di dalam file activity ListConActivity.java. Buka dan edit file ListConActivity.java.

public class ListConActivity extends Activity {

	private String[] Distro = { "Ubuntu", "Arch Linux", "Mandriva",
			"Open Suse", "IGOS Nusantara", "Linux Mint", "Debian", "Fedora",
			"CrunchBang", "Backtrack", "Puppy Linux", "OpenBSD", "Slackware",
			"BlankOn", "CentOS" };
	private String[] pilihan_menu = { "Tambah Data", "Edit Data", "Hapus Data",
			"Kirim Data" };

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Arrays.sort(Distro);

		ListView list = (ListView) findViewById(R.id.list);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, Distro);
		list.setAdapter(adapter);
		registerForContextMenu(list);
	}

	public void onCreateContextMenu(ContextMenu menu, View tampil,
			ContextMenuInfo menuInfo) {
		if (tampil.getId() == R.id.list) {
			AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
			menu.setHeaderTitle(Distro[info.position]);
			for (int i = 0; i < pilihan_menu.length; i++) {
				menu.add(Menu.NONE, i, i, pilihan_menu[i]);
			}
		}
	}

	public boolean onContextItemSelected(MenuItem item) {
		AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
				.getMenuInfo();
		String aksi = pilihan_menu[item.getItemId()];
		String nama_pilihan = Distro[info.position];
		String isi = String.format("Anda melakukan operasi %s pada pilihan %s",
				aksi, nama_pilihan);

		Toast.makeText(this, isi, Toast.LENGTH_LONG).show();
		return true;
	}
}

Data yang terdapat di dalam array pilihan_menu disimpan ke dalam item context menu dengan fungsi menu.add() dan di-looping sebanyak jumlah data yang terdapat di dalamnya.

4. Jalankan emulator dan kira-kira hasilnya seperti gambar di bawah ini. Mungkin tampilannya agak berbeda, karena font system di emulatornya saya kecilkan. Klik dan tahan agak lama, maka akan muncul context menu dari pilihan yang kita pilih

Dengan cara di atas, kita sudah mempunyai sedikit bekal untuk mulai melangkah ke proses manipulasi data dari database, baik itu database lokal maupun database yang sudah online. Di postingan berikutnya, saya akan coba untuk membuat sebuah aplikasi sederhana untuk manipulasi data dari database lokal (CRUD sqlite). OK deh, sekian dulu postingan saya kali ini. Semoga bermanfaat untuk kita semua.

Happy Blogging and Keep Coding

Cheerrrsss….!!!!

[to_like]Download Aplikasi[/to_like]

11 comments

  1. setrud98 Reply

    numpang nanya kalau membuat spinner listnya ada a, b , c, d jika pilihan nya a (adalah salah) maka akan muncul toast error tapi jika pilihannya benar ( b ) maka dia akan ke link(xml) selanjutnya itu bikinnya gimana???

  2. user Reply

    gan
    numpang nanya kalau membuat spinner listnya ada a, b , c, d jika pilihan nya a (adalah salah) maka akan muncul toast error tapi jika pilihannya benar ( b ) maka dia akan ke link(xml) selanjutnya itu bikinnya gimana???

  3. veny Reply

    gan saya mau tanya kalo data yg d select itu dari database dan akan di hapus knpa tdak berhasil ya?
    saya buatnya seperti ini
    public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    String aksi = pilih_menu;
    String nama_pilihan = isi[info.position];
    helper.deleteAnak(nama_pilihan.toString());
    String isi =String.format(“Anda melakukan operasi %s pada pilihan %s”,aksi, nama_pilihan);
    Toast.makeText(this, isi, Toast.LENGTH_LONG).show();

    return true;
    }

    mohon bantuannya…:-)

  4. Nurman Reply

    gan, minta tolong tutorial sortir listView yg ditampilin dr database pake preference..

    pleaseeee

  5. tirto Reply

    gan, carax supaya yg String[] Distro diset dri mysql, gimana carax yah? jadi kita g’k declare item”x (“Ubuntu”, “Arch Linux”, etc) di java, melainkan didclare di database kita thank U,,, gan,,,

    • Gede Lumbung Post authorReply

      data dari mysql dibuat ke bentuk xml atau json, trus di parsing…
      tutorialnya udah saya posting kok..

  6. wahyu Reply

    Mas, cara ganti font color nya gimana ya? textColor nya udah saya taro di ListView di xml, tetep warna putih

  7. Ryoza Morugakiro Reply

    mau tanya ni kang,,,,
    berhubungan dengan listview,
    listview di isi dari database mysql dengan menggunkan array, bagaimana agar kita bisa klik listview yg tersisi oleh array database mysql agar dapat berpindah aktivity sesuai dengan type yg tampil pada listview tersebut???.,,

    mohon pencerahannya kang… ^_^

  8. kardila Reply

    kalau seandainya pilihan tambah dipilih terus ke activity lain gimana caranya??