Tuesday 28 July 2015

Android Spinner (Drop Down List)

fanxtea.blogspot.com

Android Spinner (Drop Down List)

By Fanxtea | 1 Januari 2015



Di dalam Android, kita boleh menggunakan kelas "android.widget.Spinner" untuk menggunakan kotak senarai (dropdown).

Didalam tutorial ini, saya akan menunjukkan bagaimana untuk melakukan tugas berikut :

  1. Menggunakan Spinner dalam XML dan memuatkan senarai pilihan menggunakan fail XML juga.
  2. Menggunakan Spinner yang lain dalam XML dan memuatkan senarai pilihan melalui kod dinamik.
  3. Menggunakan listener pada Spinner, lancarkan apabila user memilih nilai dalam Spinner.


  1. Senarai list didalam Spinner
  2. Buka fail "res/layout/strings.xml".

    Fail : res/layout/strings.xml

    <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">MyAndroidApp</string> <string name="country_prompt">Pilih Negara</string> <string-array name="country_arrays"> Malaysia</item> United States</item> Indonesia</item> France</item> Italy</item> Singapore</item> New Zealand</item> India</item> </string-array> </resources>

  3. Spinner (Senarai DropDown)
  4. Buka fail "res/layout/activity_main.xml", tambah dua jenis Spinner dan satu butang.
    1. "spinner1", "android:entries" mewakili list pemilihan dalam Spinner.
    2. "spinner2", list pemilihan akan ditentukan dalam kod kemudian.

    Fail : res/layout/activity_main.xml

    <?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" > <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/country_arrays" android:prompt="@string/country_prompt" /> <Spinner android:id="@+id/spinner2" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btnSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Submit" /> </LinearLayout>


  5. Kod
  6. Baca dan fahamkan.

    Fail : MainActivity.java

    package com.fanxtea.helloworld; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity { private Spinner spinner1, spinner2; private Button btnSubmit; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addItemsOnSpinner2(); addListenerOnButton(); addListenerOnSpinnerItemSelection(); } // add items into spinner dynamically public void addItemsOnSpinner2() { spinner2 = (Spinner) findViewById(R.id.spinner2); List list = new ArrayList(); list.add("list 1"); list.add("list 2"); list.add("list 3"); ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner2.setAdapter(dataAdapter); } public void addListenerOnSpinnerItemSelection() { spinner1 = (Spinner) findViewById(R.id.spinner1); spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener()); } // get the selected dropdown list value public void addListenerOnButton() { spinner1 = (Spinner) findViewById(R.id.spinner1); spinner2 = (Spinner) findViewById(R.id.spinner2); btnSubmit = (Button) findViewById(R.id.btnSubmit); btnSubmit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "OnClickListener : " + "\nSpinner 1 : "+ String.valueOf(spinner1.getSelectedItem()) + "\nSpinner 2 : "+ String.valueOf(spinner2.getSelectedItem()), Toast.LENGTH_SHORT).show(); } }); } }


    Fail : CustomOnItemSelectedListener.java

    package com.fanxtea.helloworld; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Toast; public class CustomOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView parent, View view, int pos,long id) { Toast.makeText(parent.getContext(), "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }

  7. Demo
  8. Run aplikasi.

    Default skrin memaparkan 2 jenis list dan satu butang "Submit".

    Listpertama memilih "Singapore".

    Toast Message menunjukkan anda telah memilih Singapore muncul.

    Tukar list kedua dan tekan butang "Submit" untuk melihat hasil perubahan.