एंड्रॉइड में स्पिनर में आइटम कैसे जोड़ें?


जवाबों:


144

XML फ़ाइल:

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

जावा फ़ाइल:

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);
    }
}

स्पिनर उदाहरण देखें


7
हालांकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को यहां शामिल करना बेहतर होगा , और संदर्भ के लिए लिंक प्रदान करें।
छिपकली का बिल

इस android.R.layout.simple_spinner_dropdown_item का उपयोग इस android.R.layout.simple_spinner_item के स्थान पर करें
sai गोरंतला

Array_spinner क्या है? सरणी का नाम arraySpinner है। क्या यह वर्तनी की गलती है या इसे केवल ऐसा ही होना है>
सूरज

1
जोड़ने पर विचार करें adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);( s.setAdapter(adapter);ड्रॉपडाउन को बेहतर बनाने से पहले ।
प्रतिबंध-जियोइंजीनियरिंग

1
@StephenM ने
पंकजगरवाल

99

मुझे एक और विकल्प मिला है: लेआउट फ़ाइल में स्पिनर परिभाषा

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

फ़ाइल array.xml में आइटम परिभाषा:

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

कोड के पूर्ण स्रोत से लिंक करें


मैंने ऊपर दिए गए सभी तरीकों और कुछ अन्य ट्यूटोरियल की कोशिश की, लेकिन यह केवल एक ही है जिसने मेरे लिए काम किया। आपको बहुत - बहुत धन्यवाद!
स्नैप्लेक्स

ख़ुशी आपकी मदद के लिए @snapplex;)
मैक्विस

1
यह शीर्ष उत्तर होना चाहिए। स्वच्छ।

30

इस कोड को आज़माएं:

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
        }
    });

आप स्ट्रिंग सरणी 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>

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

स्पिनर में आइटम जोड़ने के लिए, आप एक काम कर सकते हैं, एडेप्टर बनाने की कोशिश करें और फिर एडॉप्टर में आइटम जोड़ें / निकालें, फिर आप आसानी से setAdapter()विधि का उपयोग करके उस एडेप्टर को स्पिनर से जोड़ सकते हैं ।

यहाँ एक उदाहरण है:

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

उर उत्तर के लिए thanx मैं भी अब मैं इस पर एक समस्या का सामना कर रहा हूँ समाधान मिल गया।

मैं स्पिनर की चयनित वस्तु को प्राप्त करना चाहता हूं अर्थात इसकी स्थिति को और आगे बढ़ाता हूं, मैं इसे अन्य तरीके से पास करना चाहता हूं जो मैंने किया है ... डेटापिन ।setOnItemSelectedListener (नया myitemlistener ());

डेटापिन मेरी स्पिनर वस्तु है

@ ऑवरराइड सार्वजनिक शून्य पर रखा गया int pos = (int) parent.getItemIdAtPosition (स्थिति); System.out.println ("स्पिनर की स्थिति ..." + पॉस); setSearchView (पीओएस); }

अगर मैं स्पिनर की तुलना में ऐसा करता हूं तो यह प्रदर्शित नहीं हो रहा है

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

आपके लेआउट में:

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

लेकिन फिर आपको चयनित आइटम कैसे मिलेगा?
demotivated

1
जावा फ़ाइल में पहला टाइपकास्ट। फिर स्पिनर स्पिनर का उपयोग करें; स्पिनर = findViewById (R.id.spinner); spinner.setOnItemClickListener (new AdapterView.OnItemClickListener () {@Override public void onItemClick (AdapterView <?> माता-पिता, दृश्य देखें, int स्थिति, लंबी आईडी) {}});
ZIA ANSARI

5

यह कोड मूल रूप से JSON सरणी ऑब्जेक्ट को पढ़ता है और प्रत्येक पंक्ति को स्पिनर में एक विकल्प में परिवर्तित करता है जिसे एक पैरामीटर के रूप में पारित किया जाता है:

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

XML लेआउट में एक स्पिनर जोड़ें, और फिर इस कोड को जावा फ़ाइल में जोड़ें:

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

सूची को अपडेट करने के बाद इस कोड को जोड़ें

मान लीजिए:

ArrayAdapter <String> वैरिएबल का नाम डेटा एडेप्टर है , और सूची वैरिएबल का नाम कुंजी है

  • dataAdapter.addAll (कुंजी);
  • dataAdapter.notifyDataSetChanged ();

1

स्पिनर में एक और आइटम जोड़ने के लिए आप कर सकते हैं:

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

myAdapter.add(myValue);

myAdapter.notifyDataSetChanged();

"UnsupportedOperationException" हुई
abbasalim

0

बस एडॉप्टर को साफ करना है, सभी इटन्स को जोड़ना है और नीचे की तरह बदलाव को सूचित करना है:

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

0

सामग्री स्पिनर लाइब्रेरी का उपयोग करने का एक आसान तरीका है: https://github.com/jaredrummler/MaterialSpinner

पहले अपने प्रोजेक्ट में जोड़ें:

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

और इस तरह का उपयोग करें:

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

और जावा कोड है कि आप जावा में आइटम इतना आसान जोड़ सकते हैं:

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();
  }
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.