Android: सरणी से स्पिनर प्रोग्रामेटिक रूप से बनाएं


198

मैं एंड्रॉइड के लिए बिल्कुल नया हूं और मैं एक स्पिनर को प्रोग्राम बनाने और एक एरे से डेटा के साथ खिलाने की कोशिश कर रहा हूं, लेकिन एक्लिप्स मुझे चेतावनी देता है कि मैं संभाल नहीं सकता।

यहाँ मुझे क्या मिला है:

यह ArrayList उन तत्वों को रखता है जो स्पिनर में होने चाहिए (बाद में एक फ़ाइल से भरा जाता है):

ArrayList<String> spinnerArray = new ArrayList<String>();

यह वह कोड है जो मुझे एक साइट पर मिला है जिसे स्पिनर बनाना चाहिए:

Spinner spinner = new Spinner(this);
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item,
                spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);

अब दूसरी पंक्ति (ArrayAdapter ...) मुझे ग्रहण में चेतावनी देते हुए कहती है "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized", मुझे नहीं पता कि इसे कैसे ठीक किया जाए (या पहली जगह में इसका क्या मतलब है :))।

यह सिर्फ एक चेतावनी है और ऐप ठीक से चलता है, लेकिन मैं अभी भी समझना चाहता हूं कि क्या गलत है और इसे ठीक करें। किसी भी संकेत की सराहना की जाती है।

अभिवादन, Select0r

जवाबों:


388

ArrayAdapter<String> कार्य करना चाहिए।

अर्थात:

Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
            (this, android.R.layout.simple_spinner_item,
           spinnerArray); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
                                                     .simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter); 

मैंने कोशिश की कि लेकिन त्रुटि बस थोड़ी बदल जाए :) Type safety: The expression of type ArrayAdapter needs unchecked conversion to conform to ArrayAdapter<String>
Select0r

2
अपनी पोस्ट संपादित करते समय जल्दी से टिप्पणी की गई :) मुझे दूसरा याद आया <String>, आपका कोड अब काम करता है, बहुत बहुत धन्यवाद!
Select0r

23
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(activity, R.layout.simple_spinner_item); spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);कुछ उपकरणों पर स्पिनर में एक रेडियो बटन का उपयोग या फिर एक अन्य बटन दिखाई दे सकता है।
केन

आपका उत्तर सहायक था और क्या आप मुझे बता सकते हैं कि अगर मैं दो स्पिनरों का उपयोग कर रहा हूं और मैं चाहता हूं कि अगर केवल 1 स्पिनर ही काम करे तो दूसरा काम करना चाहिए

1
यह एंड्रॉइड डॉक्यूमेंटेशन में इस विधि का भी वर्णन करता है: developer.android.com/guide/topics/ui/controls/spinner.html
WOUNDEDStevenJones

109

उसी तरह से ऐरे के साथ

// Array of choices
String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"};

// Selection of the spinner
Spinner spinner = (Spinner) findViewById(R.id.myspinner);

// Application of the Array to the Spinner
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item, colors);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);

मैंने एक ArrayList का उपयोग करके ऐसा किया क्योंकि मेरी सरणी एक लूप (स्थिर नहीं) से आती है।
जैक्सनक्रे

61

यह एक साथ मेरे लिए काम किया स्ट्रिंग सरणी नामित shoesपरियोजनाओं संसाधनों से भरा हुआ है:

Spinner              spinnerCountShoes = (Spinner)findViewById(R.id.spinner_countshoes);
ArrayAdapter<String> spinnerCountShoesArrayAdapter = new ArrayAdapter<String>(
                     this,
                     android.R.layout.simple_spinner_dropdown_item, 
                     getResources().getStringArray(R.array.shoes));
spinnerCountShoes.setAdapter(spinnerCountShoesArrayAdapter);

यह मेरी रिसोर्स फ़ाइल है ( res/values/arrays.xml) जिसका नाम स्ट्रिंग-ऐरे के साथ है shoes:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="shoes">
        <item>0</item>
        <item>5</item>
        <item>10</item>
        <item>100</item>
        <item>1000</item>
        <item>10000</item>
    </string-array>
</resources>

इस पद्धति के साथ इसे बहुभाषी बनाना आसान है (यदि आवश्यक हो)।


36

यह वास्तव में मेरे लिए काम किया

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, spinnerArray);
    spinnerArrayAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );

    spinner = (Spinner) findViewById( R.id.spinner );
    spinner.setAdapter(spinnerArrayAdapter);

6
Spinner spinner = new Spinner(this);जब आप ऐसा करते हैं तो इसका क्या उद्देश्य हैspinner = (Spinner) findViewById( R.id.spinner );
mr5

त्रुटि क्यों: ArrayAdapter (<अनाम OnItemSelectedListener>, int, DetailData) निर्माणकर्ता के लिए कोई उपयुक्त निर्माण नहीं मिला है।
user151968

6

मेरे लिए यह काम: -

String[] array = {"A", "B", "C"};
String abc = "";


Spinner spinner = new Spinner(getContext());
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, array); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);

मैं एक विखंडन का उपयोग कर रहा हूं।


3

कोटलिन भाषा में आप इसे इस तरह से कर सकते हैं:

val values = arrayOf(
    "cat",
    "dog",
    "chicken"
)

ArrayAdapter(
    this,
    android.R.layout.simple_spinner_item,
    values
).also {
    it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    spinner.adapter = it
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.