Bagaimana cara menambahkan item ke spinner di Android?


107

Bagaimana cara menambahkan item ke spinner?


1
Jika Anda ingin menambahkan item secara dinamis ke daftar Anda dan memanggil adapter.notifyDataSetChanged ()
asok Buzz

Jawaban:


144

File XML:

<Spinner
    android:id="@+id/Spinner01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

File Java:

public class SpinnerExample extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String[] arraySpinner = new String[] {
            "1", "2", "3", "4", "5", "6", "7"
        };
        Spinner s = (Spinner) findViewById(R.id.Spinner01);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, arraySpinner);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s.setAdapter(adapter);
    }
}

Lihat contoh spinner .


7
Meskipun ini secara teoritis dapat menjawab pertanyaan tersebut, akan lebih baik jika menyertakan bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Bill the Lizard

gunakan android.R.layout.simple_spinner_dropdown_item ini di tempat android.R.layout.simple_spinner_item ini terlihat jauh lebih baik
sai Gorantla

Apa itu array_spinner? nama array adalah arraySpinner. apakah itu kesalahan ejaan atau harus seperti itu saja>
SurajS

1
Pertimbangkan untuk menambahkan adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);(sebelum s.setAdapter(adapter);untuk membuat dropdown terlihat lebih baik.
ban-geoengineering

1
@StephenM mengubah tautan
pankajagarwal

99

Saya telah menemukan opsi lain: definisi spinner di file tata letak

<Spinner android:id="@+id/spinner"
    android:layout_width="fill_parent"
    android:drawSelectorOnTop="true"
    android:prompt="@string/spin"
    android:entries="@array/spinnerItems"
/>

Definisi item dalam file array.xml:

<resources>
    <string-array name="spinnerItems">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
        <item>item4</item>
    </string-array>
</resources>

Tautkan ke sumber kode lengkap


Saya mencoba semua metode di atas dan beberapa tutorial lainnya, tetapi ini adalah satu-satunya yang berhasil untuk saya. Terima kasih banyak!
snapplex

Senang bisa membantu Anda @snapplex;)
maxivis

1
Ini harus menjadi jawaban teratas. Bersih.

30

Coba kode ini:

final List<String> list = new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
list.add("Item 4");
list.add("Item 5");

final String[] str = {"Report 1", "Report 2", "Report 3", "Report 4", "Report 5"};

final Spinner sp1 = (Spinner) findViewById(R.id.spinner1);
final Spinner sp2 = (Spinner) findViewById(R.id.spinner2);

ArrayAdapter<String> adp1 = new ArrayAdapter<String>(this,
                              android.R.layout.simple_list_item_1, list);
adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp1.setAdapter(adp1);

ArrayAdapter<String> adp2 = new ArrayAdapter<String>(this,
                                  android.R.layout.simple_spinner_item, str);
adp2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp2.setAdapter(adp2);

sp1.setOnItemSelectedListener(new OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(getBaseContext(), list.get(position), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    });

sp2.setOnItemSelectedListener(new OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(getBaseContext(), str[position], Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    });

Anda juga dapat menambahkan nilai item spinner melalui file String array xml ..

<resources>
    <string name="app_name">Spinner_ex5</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <string-array name="str2">
        <item>Data 1</item>
        <item>Data 2</item>
        <item>Data 3</item>
        <item>Data 4</item>
        <item>Data 5</item>
    </string-array>
</resources>

Di mainActivity.java:

final Spinner sp3 = (Spinner) findViewById(R.id.spinner3);
ArrayAdapter<CharSequence> adp3 = ArrayAdapter.createFromResource(this,
                                    R.array.str2, android.R.layout.simple_list_item_1);

adp3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp3.setAdapter(adp3);
sp3.setOnItemSelectedListener(new OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
            // TODO Auto-generated method stub
            String ss = sp3.getSelectedItem().toString();
            Toast.makeText(getBaseContext(), ss, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    });

9

Untuk menambahkan item di Spinner, Anda dapat melakukan satu hal, mencoba membuat adaptor lalu menambahkan / menghapus item ke adaptor, lalu Anda dapat dengan mudah mengikat adaptor tersebut ke spinner dengan menggunakan setAdapter() metode.

Berikut ini contohnya:

spinner.setAdapter(adapter);
adapter.add(item1);
adapter.add(item2);
adapter.add(item3);
adapter.add(item4);
adapter.add(item5);
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);

thanx for ur reply saya mendapat solusinya juga sekarang saya menghadapi satu masalah di atasnya.

Saya ingin mengambil item yang dipilih dari spinner yaitu posisinya lebih jauh saya ingin meneruskannya ke metode lain, lihat apa yang saya lakukan ... datasetpin.setOnItemSelectedListener (new myitemlistener ());

pin data adalah objek Spinner saya

@Override public void onItemSelected (AdapterView <?> Parent, View view, int position, long id) {// TODO Auto-generated method stub String p = parent.getItemAtPosition (position) .toString (); int pos = (int) parent.getItemIdAtPosition (posisi); System.out.println ("posisi pemintal ..." + pos); setSearchView (pos); }

jika saya melakukan ini daripada item pemintal tidak ditampilkan

8
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>

Dalam tata letak Anda:

<Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:entries="@array/array_name"
    />

tapi bagaimana Anda mendapatkan item yang dipilih?
Demotivasi

1
TypeCast pertama dalam file Java. Kemudian gunakan Spinner spinner; spinner = findViewById (R.id.spinner); spinner.setOnItemClickListener (baru AdapterView.OnItemClickListener () {@Override public void onItemClick (AdapterView <?> induk, Tampilan tampilan, posisi int, id panjang) {}});
ZIA ANSARI

5

Kode ini pada dasarnya membaca objek array JSON dan mengubah setiap baris menjadi opsi di spinner yang diteruskan sebagai parameter:

public ArrayAdapter<String> getArrayAdapterFromArrayListForSpinner(ArrayList<JSONObject> aArrayList, String aField)
{
    ArrayAdapter<String> aArrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item);
    aArrayAdapter.setDropDownViewResource(R.layout.multiline_spinner_dropdown_item); //android.R.layout.simple_spinner_dropdown_item
    try {
        for (int i = 0; i < aArrayList.size(); i++)
        {
            aArrayAdapter.add(aArrayList.get(i).getString(aField)); 
        }
    } catch (JSONException e) {
        e.printStackTrace();
        ShowMessage("Error while reading the JSON list");
    }
    return aArrayAdapter;       
}

2

Tambahkan spinner ke layout XML, lalu tambahkan kode ini ke file Java:

Spinner spinner;
spinner = (Spinner) findViewById(R.id.spinner1) ;
java.util.ArrayList<String> strings = new java.util.ArrayList<>();
strings.add("Mobile") ;
strings.add("Home");
strings.add("Work");
SpinnerAdapter spinnerAdapter = new SpinnerAdapter(AddMember.this, R.layout.support_simple_spinner_dropdown_item, strings);
spinner.setAdapter(spinnerAdapter);

1

Tambahkan kode ini setelah memperbarui daftar

Seharusnya:

Nama variabel ArrayAdapter <String> adalah dataAdapter , dan nama variabel Daftar adalah kunci .

  • dataAdapter.addAll (kunci);
  • dataAdapter.notifyDataSetChanged ();

1

Untuk menambahkan satu item lagi ke Spinner, Anda dapat:

ArrayAdapter myAdapter = 
  ((ArrayAdapter) mySpinner.getAdapter());

myAdapter.add(myValue);

myAdapter.notifyDataSetChanged();

"UnsupportedOperationException" terjadi
abbasalim

0

Ini hanya untuk menghapus adaptor, menambahkan semua itens dan memberi tahu perubahan seperti di bawah ini:

  public void show(List<Object> objLIst) {
    adapter.clear();
    adapter.addAll(objLIst);
    adapter.notifyDataSetChanged(); }

0

Cara yang lebih mudah adalah dengan menggunakan pustaka pemintal material: https://github.com/jaredrummler/MaterialSpinner

pertama tambahkan ke proyek Anda:

compile 'com.jaredrummler:material-spinner:1.2.4'

dan gunakan seperti ini:

<com.jaredrummler.materialspinner.MaterialSpinner
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

dan kode java sehingga Anda dapat menambahkan item di java dengan mudah:

MaterialSpinner spinner = (MaterialSpinner) findViewById(R.id.spinner);
spinner.setItems("item 1", "item 2", "item 3", "item 4", "item 5");
spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {

  @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
    Snackbar.make(view, "Clicked " + item, Snackbar.LENGTH_LONG).show();
  }
});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.