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

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

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

আপনি 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 নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:

কোটলিন

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 ইন্টারফেসের একটি বাস্তবায়ন রয়েছে:

কোটলিন

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() কল করে ইন্টারফেস বাস্তবায়ন নির্দিষ্ট করুন :

কোটলিন

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 পাস করতে পারেন।