توفر الدوّارات طريقة سريعة لاختيار قيمة واحدة من مجموعة. في الحالة الافتراضية، يعرض المؤشر الدوّار قيمته المحددة حاليًا. يؤدي النقر على مؤشر سريان العمل إلى عرض قائمة توضح جميع القيم الأخرى التي يمكن للمستخدم تحديدها.
يمكنك إضافة مؤشر سريان العمل إلى التنسيق باستخدام
الكائن Spinner
، وهو ما تفعله عادةً في تنسيق XML باستخدام
عنصر <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
كمثيل للواجهة.