আপনার অ্যাপে স্পিনার যোগ করা

স্পিনার কোনও সেট থেকে একটি ভ্যালু বেছে নেওয়ার দ্রুত উপায় প্রদান করে। ডিফল্ট অবস্থায়, স্পিনার বর্তমানে বেছে নেওয়া ভ্যালু দেখায়। স্পিনারে ট্যাপ করলে একটি মেনু দেখা যায় যেখানে ব্যবহারকারী বেছে নিতে পারেন এমন অন্যান্য সব ভ্যালু দেখানো হয়।

ছবি ১. স্পিনার থেকে একটি মেনু, উপলভ্য মান দেখাচ্ছে।

আপনি Spinner অবজেক্টের সাহায্যে আপনার লেআউটে একটি স্পিনার যোগ করতে পারেন, যা আপনি সাধারণত আপনার XML লেআউটে একটি <Spinner> এলিমেন্টের সাহায্যে করেন। এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

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

পছন্দের তালিকা সহ স্পিনার পপুলেট করতে, আপনার Activity বা Fragment সোর্স কোডে একটি SpinnerAdapter নির্দিষ্ট করুন।

আপনি মেটেরিয়াল ডিজাইন কম্পোনেন্ট ব্যবহার করলে, এক্সপোজড ড্রপডাউন মেনু হল 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>

এই ধরনের অ্যারের ক্ষেত্রে, আপনি ArrayAdapter-এর ইনস্ট্যান্স ব্যবহার করে অ্যারের সাথে স্পিনার প্রদান করতে আপনার Activity বা Fragment-এ নিম্নলিখিত কোড ব্যবহার করতে পারেন:

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
}

জাভা

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 হল প্ল্যাটফর্মের দ্বারা সংজ্ঞায়িত আরেকটি স্ট্যান্ডার্ড লেআউট।

আপনার Spinner-এ অ্যাডাপ্টার প্রয়োগ করতে setAdapter()-এ কল করুন।

ব্যবহারকারীর বেছে নেওয়া বিকল্পে উত্তর দিন

ব্যবহারকারী স্পিনারের মেনু থেকে কোনও আইটেম বেছে নিলে, 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.
    }
}

জাভা

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

জাভা

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

আপনি যদি আগের উদাহরণের মতো Activity বা Fragment-এর সাথে AdapterView.OnItemSelectedListener ইন্টারফেস প্রয়োগ করেন, তাহলে ইন্টারফেস ইনস্ট্যান্স হিসেবে this পাস করতে পারবেন।