إضافة أدوات دورانية إلى تطبيقك

تُوفّر المراوح طريقة سريعة لاختيار قيمة من المجموعة. في الإعداد التلقائي الحالة، فإن مؤشر سريان العمل يعرض القيمة المحددة حاليًا. النقر على مؤشر سريان العمل قائمة تعرض جميع القيم الأخرى التي يمكن للمستخدم تحديدها.

الشكل 1 قائمة من دوّارة تعرض الخيارات المتاحة القيم.

يمكنك إضافة مؤشر سريان العمل إلى التنسيق باستخدام Spinner وهو ما تفعله عادةً في تخطيط XML باستخدام العنصر <Spinner> يظهر ذلك في ما يلي مثال:

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

لملء مؤشر سريان العمل بقائمة اختيارات، حدِّد SpinnerAdapter في Activity أو Fragment رمز المصدر.

إذا كنت تستخدم مكونات Material Design، معرّض للهجوم القوائم المنسدلة تعادل 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 كمثيل للواجهة.