Pada tutorial yang kesempatan yang dahulu kita telah membahas cara membuat combo box pada sistem android, Sekarang mari kita belajar untuk bagaimana membuat Dynamic ComboBox (ComboBox yang dinamis).Kita pasti pernah menemui suatu hal pada satu form terdapat dua buah combo box yang saling berkorelasi.Misalnya saja dalam sebuah form registrasi calon user, harus meregistrasikan data-data dirinya termasuk tinggal dinegara mana dan dikota apa, disini kita akan mendapatkan kecerdasan dimana apabila kita pilih pada suatu Negara, maka yang muncul adalah combobox tentang kota adalah kota-kota yang terdapat pada negara tersebut. Dikarenakan combobox kota ini isinya data yang bersifat dinamis bergantung pada negara yang akan dipilih maka dia termasuk golongan dinamik combobox.Sekarang mari kita lanjutkan ke bagian source code.
  1. Buka kembali project BelajarCombobox
  2. Edit sebuah file main.xml lalu isikan dengan code dibawah ini
01<?xml version="1.0" encoding="utf-8"?>
02<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03    android:orientation="vertical" android:layout_width="fill_parent"
04    android:layout_height="fill_parent">
05    <TextView android:text="Negara :" android:id="@+id/selection_country" android:layout_width="fill_parent"
06        android:layout_height="wrap_content" />
07    <Spinner android:id="@+id/spinner_country" android:layout_width="fill_parent"
08        android:layout_height="wrap_content" android:drawSelectorOnTop="true" />
09    <TextView android:text="kota :" android:id="@+id/selection_city" android:layout_width="fill_parent"
10        android:layout_height="wrap_content" />
11    <Spinner android:id="@+id/spinner_city" android:layout_width="fill_parent"
12        android:layout_height="wrap_content" android:drawSelectorOnTop="true" />
13</LinearLayout>

Pada bagian main.xml diatas kita menambahkan satu komponen spinner lagi  untuk combobox kota

3.  Edit File kelas CreateComboBox.java lalu isikan dengan source code dibawah ini
01package com.agus.combobox;
02
03import java.util.HashMap;
04
05import android.app.Activity;
06import android.os.Bundle;
07import android.view.View;
08import android.widget.AdapterView;
09import android.widget.ArrayAdapter;
10import android.widget.Spinner;
11import android.widget.TextView;
12import android.widget.Toast;
13
14public class CreateComboBox extends Activity implements AdapterView.OnItemSelectedListener {
15    TextView selection_country;
16    TextView selection_city;
17    Spinner spin_city;
18    String[] negara = { "Amerika", "Argentina", "Brazil", "Indonesia",
19            "Inggris", "Malaysia", "Pilipina" };
20    HashMap<String, String []> hash_negara = new HashMap<String, String []>();
21
22    @Override
23    public void onCreate(Bundle icicle) {
24       super.onCreate(icicle);
25       generateData();
26       setContentView(R.layout.main);
27       selection_country = (TextView) findViewById(R.id.selection_country);
28       Spinner spin = (Spinner) findViewById(R.id.spinner_country);
29       spin.setOnItemSelectedListener(this);
30       ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, negara);
31       aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
32        spin.setAdapter(aa);
33        spin_city = (Spinner) findViewById(R.id.spinner_city);
34
35    }
36
37    public void onItemSelected(AdapterView<?> parent, View v, int position,   long id) {
38        fillComboKota(negara[position]);
39    }
40
41    public void onNothingSelected(AdapterView<?> parent) {
42   Toast.makeText(this, "Silahkan Pilih Negara", Toast.LENGTH_LONG).show();
43    }
44
45    private void generateData(){
46        hash_negara.put("Amerika", new String[] {"Chicago","Los Angeles","Newyork"});
47        hash_negara.put("Indonesia", new String[] {"Bandung","Jakarta","Surabaya"});
48        hash_negara.put("Malaysia", new String[] {"Kuala Lumpur","Selangor","Serawak"});
49    }
50    private void fillComboKota(String snegara){
51        String[] kota = null;
52        ArrayAdapter<String> aa = null;
53        try {
54            kota = hash_negara.get(snegara);
55            aa = new ArrayAdapter<String>(this,
56                    android.R.layout.simple_spinner_item, kota);
57        } catch (NullPointerException e) {
58            aa = new ArrayAdapter<String>(this,
59                    android.R.layout.simple_spinner_item, new String[] {});
60        }
61       aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
62      spin_city.setAdapter(aa);
63    }
64
65}

Supaya isi combobox kota sesuai dengan Negara yang akan dipilih, maka kita perlu mempunyai variable yang menyimpan relasi atribut negara dan kota, disini kita menggunakan HashMap dimana Nama Negara menjadi key dan Nama Kota menjadi datanya
HashMap<String, String []> hash_negara = new HashMap<String, String []>();
Kita sudah punya tempat untuk menyimpan relasi Negara dan kota, tetapi ini belum cukup, kita perlu mengisi tempat tersebut dengan data.

1    private void generateData(){
2    hash_negara.put("Amerika", new String[] {"Chicago","Los Angeles","Newyork"});
3    hash_negara.put("Indonesia", new String[] {"Bandung","Jakarta","Surabaya"});
4    hash_negara.put("Malaysia", new String[] {"Kuala Lumpur","Selangor","Serawak"});
5}
Sekarang bagaimana caranya kita untuk mengisi ComboBox Kota supaya isinya sesuai dengan Negara yang akan dipilih sesuai keinginan kita.

Perhatikan method fillComboKota
01private void fillComboKota(String snegara){
02        String[] kota = null;
03        ArrayAdapter<String> aa = null;
04        try {
05            kota = hash_negara.get(snegara);
06            aa = new ArrayAdapter<String>(this,
07                    android.R.layout.simple_spinner_item, kota);
08        } catch (NullPointerException e) {
09            aa = new ArrayAdapter<String>(this,
10                    android.R.layout.simple_spinner_item, new String[] {});
11        }
12       aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
13        spin_city.setAdapter(aa);
14    }
15
16}

Method fillComboKota dipanggil setelah kita memilih suatu Negara. Disinilah keunggulan HashMap,untuk mendapatkan data kotanya kita tidak perlu melakukan loop seperti pada Array,
kita cukup menggunakan method get hash_negara.get(snegara); pada method fillComboKota kita juga melakukan Handling Exception NullPointerException. apabila Negara yang dipilih tidak ditemukan sehingga menghasilkan nilai Null.Dikarenakan atribut egaranya tidak ditemukan maka isi ComboBox Kota harus dalam posisi kosong.
aa= new ArrayAdapter<String>(this,    android.R.layout.simple_spinner_item, new String[] {});
4. Sekarang mari kita jalankan programnya.

Pada komponen ComboBox Negara Pilih Indonesia maka komponen ComboBox Kota akan berisi Bandung, Jakarta dan Surabaya.

Belajar Android - Membuat ComboBox Dinamis
   
Pada ComboBox Negara Pilih negara Malaysia maka ComboBox Kota akan berisi Kuala Lumpur, Selangor dan Serawak

Belajar Android - Membuat ComboBox Dinamis

Dari tutorial singkat ini, ada beberapa hal yang penting. Untuk membuat aplikasi android kita menggunakan bahasa java.Ruang lingkup pengetahuan kita di bahasa pemrograman java akan sangat membantu dalam pembuatan aplikasi di sistem operasi android.Contohnya adalah bagaimana cara menyimpan sebuah data serta relasi negara dan kota yang kita solusikan dengan menggunakan pernyataan  HashMap. Jika kita kita tidak tahu di Java ada HashMap, tentu kita akan menggunakan cara lain dan itu perlu usaha lebih untuk mensolusikannya.
Semoga Bermanfaat

0 komentar:

Post a Comment

Translate

RSS Feed

Enter your email address:

Delivered by FeedBurner

Dark Mode

Popular Posts

Blog Archive