अपने ऐप्लिकेशन में स्पिनर जोड़ना

स्पिनर की मदद से किसी सेट से एक वैल्यू तुरंत चुनी जा सकती है. डिफ़ॉल्ट में स्थिति है, तो स्पिनर इसका वर्तमान में चयनित मान दिखाता है. स्पिनर पर टैप करना इससे एक मेन्यू दिखता है. इसमें वे सभी वैल्यू दिखती हैं जिन्हें उपयोगकर्ता चुन सकता है.

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
पहली इमेज. स्पिनर का एक मेन्यू, जो वैल्यू.

इसके साथ, अपने लेआउट में स्पिनर जोड़ा जा सकता है Spinner अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ऑब्जेक्ट है, जिसे आप आमतौर पर अपने एक्सएमएल लेआउट में <Spinner> एलिमेंट. यह इस तरह से दिखाया गया है उदाहरण:

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

विकल्पों की सूची के साथ स्पिनर को पॉप्युलेट करने के लिए, SpinnerAdapter अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है आपके Activity या Fragment सोर्स कोड.

अगर मटीरियल डिज़ाइन कॉम्पोनेंट का इस्तेमाल किया जा रहा है, तो एक्सपोज़्ड ड्रॉपडाउन मेन्यू, Spinner के बराबर होते हैं.

उपयोगकर्ता के विकल्पों के साथ स्पिनर को पॉप्युलेट करें

स्पिनर को दिए जाने वाले विकल्प किसी भी स्रोत से आ सकते हैं, लेकिन आपके पास उन्हें SpinnerAdapter के ज़रिए उपलब्ध कराना होगा, जैसे कि ArrayAdapter अगर विकल्प किसी कलेक्शन में उपलब्ध हैं या CursorAdapter अगर विकल्प किसी डेटाबेस क्वेरी से उपलब्ध हों.

उदाहरण के लिए, अगर आपके स्पिनर के लिए उपलब्ध विकल्प पहले से तय हैं, तो तो आप उन्हें स्ट्रिंग रिसॉर्स फ़ाइल:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>

इस तरह की कलेक्शन के साथ, नीचे दिए गए कोड का इस्तेमाल के साथ स्पिनर देने के लिए Activity या Fragment ArrayAdapter के इंस्टेंस का इस्तेमाल करके अरे:

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
// Create an ArrayAdapter using the string array and a default spinner layout.
ArrayAdapter.createFromResource(
        this,
        R.array.planets_array,
        android.R.layout.simple_spinner_item
).also { adapter ->
    // Specify the layout to use when the list of choices appears.
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    // Apply the adapter to the spinner.
    spinner.adapter = adapter
}

Java

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
// Create an ArrayAdapter using the string array and a default spinner layout.
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this,
        R.array.planets_array,
        android.R.layout.simple_spinner_item
);
// Specify the layout to use when the list of choices appears.
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner.
spinner.setAdapter(adapter);

कॉन्टेंट बनाने createFromResource() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तरीके की मदद से, स्ट्रिंग अरे से ArrayAdapter बनाया जा सकता है. कॉन्टेंट बनाने तीसरा तर्क एक लेआउट संसाधन है, जो तय करता है कि चुना गया विकल्प, स्पिनर कंट्रोल में दिखता है. यह प्लैटफ़ॉर्म, simple_spinner_item अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है लेआउट. यह डिफ़ॉल्ट लेआउट है, जब तक कि आप इसके लिए अपना खुद का लेआउट परिभाषित नहीं करना चाहते स्पिनर कैसा दिखेगा.

कॉल करें setDropDownViewResource(int) अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है उस लेआउट को निर्दिष्ट करने के लिए जिसका उपयोग अडैप्टर स्पिनर विकल्पों की सूची दिखाने के लिए करता है. simple_spinner_dropdown_item अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है एक अन्य स्टैंडर्ड लेआउट है जिसे प्लैटफ़ॉर्म ने तय किया है.

कॉल करें setAdapter() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अपने Spinner पर अडैप्टर लगाने के लिए.

चुने गए उपयोगकर्ताओं को जवाब दें

जब उपयोगकर्ता स्पिनर के मेन्यू से किसी आइटम को चुनता है, तो Spinner ऑब्जेक्ट आइटम पर चुना गया इवेंट मिलता है.

किसी स्पिनर के लिए चयन इवेंट हैंडलर निर्धारित करने के लिए, AdapterView.OnItemSelectedListener इंटरफ़ेस और उससे जुड़े onItemSelected() कॉलबैक का तरीका. उदाहरण के लिए, यहां एक उदाहरण में इंटरफ़ेस को लागू करने का तरीका बताया गया है Activity:

Kotlin

class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener {
    ...
    override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
        // An item is selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos).
    }

    override fun onNothingSelected(parent: AdapterView<*>) {
        // Another interface callback.
    }
}

Java

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...
    public void onItemSelected(AdapterView<?> parent, View view,
            int pos, long id) {
        // An item is selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos).
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback.
    }
}

कॉन्टेंट बनाने AdapterView.OnItemSelectedListener इंटरफ़ेस के लिए onItemSelected() और onNothingSelected() कॉलबैक के तरीके.

कॉल करके इंटरफ़ेस लागू करने की जानकारी दें setOnItemSelectedListener():

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
spinner.onItemSelectedListener = this

Java

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
spinner.setOnItemSelectedListener(this);

अगर आप AdapterView.OnItemSelectedListener लागू करते हैं, तो इंटरफ़ेस आपके Activity या Fragment के साथ दिखाई देगा, जैसा कि पिछले उदाहरण में, this को इंटरफ़ेस इंस्टेंस के तौर पर पास किया जा सकता है.