قائمة الاختيار في الأندرويد | Spinner

AbdulAlim Rajjoubمنذ 6 سنوات

ماهو Spinner؟

عبارة عن قائمة تحتوي على عنصر واحد يكون بشكل ظاهر,وعند الضغط عليه ستظهر باقي الإختيارات,يستخدم عادة لاختيار تصنيف ما

بهذا الشكل, وهذا ماسنقوم بصنعه

 

نبدأ بإنشاء Spinner ,يمكنك تعريفه مثلما تعرف أي View في xml وتربطه في الجافا

Spinner spinner = (Spinner) findViewById(R.id.spinner);

الآن نقوم بعمل List والتي ستكون القائمة التي تحتوي على العناصر التي نريد عرضها في Spinner

يمكنك استخدام String[] array اذا أردت, ولكنني سأستخدم List<String< 

قمنا بإنشاء قائمة وأسميناها spinnerList ووضعنا بها ٦ عناصر

List<String> spinnerList = new ArrayList<>();
spinnerList.add("Google");
spinnerList.add("Microsoft");
spinnerList.add("Apple");
spinnerList.add("Dell");
spinnerList.add("HP");
spinnerList.add("ASUS");

الآن يجب علينا أن نقوم بإنشاء Adapter بسيط (كما نفعل مع ListView او RecyclerView) ليقوم بعرض هذه العناصر في Spinner

وهو عبارة عن ArrayAdapter يقوم بأخذ :

  • Context 
  • شكل العنصر الذي سيتم عرضه (ملف xml) ,وهنا قمنا باستخدام ملف xml جاهز ضمن Android Framework
  • وأخيراً الليست او Array
final ArrayAdapter<String> adapter = new ArrayAdapter<String(this,android.R.layout.simple_spinner_dropdown_item,spinnerList);

ثم نقوم بعمل setAdapter 

spinner.setAdapter(adapter);

نجرب تشغيل التطبيق

 

اما الآن فنريد عند الضغط على عنصر معين أن يظهر رسالة Toast على سبيل المثال تحتوي على اسم العنصر الذي تم الضغط عليه

  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this, "you clicked "+adapterView.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

قمنا بإظهار توست عند اختيار عنصر ما,كما قمنا بأخذ اسم العنصر الذي تم الضغط عليه عبر

adapterView.getSelectedItem().toString()

ماذا إذا أردنا تغيير شكل النص على سبيل المثال؟

نقوم بعمل ملف layout xml والذي سيمثل شكل العنصر نسميه spinner_row على سبيل المثال

وهو عبارة عن TextView فقط وقمنا بتغيير حجم الخط ولونه و المحاذاة

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#E94F37"
    android:padding="6dp"
    android:textSize="24sp">


</TextView>

الآن نعود الى ArrayAdapter ونقوم بتغير ملف layout الى spinner_row ليصبح بهذا الشكل

final ArrayAdapter<String> adapter = new ArrayAdapter<String(this,R.layout.spinner_row,spinnerList);

نجرب تشغيل التطبيق لنرى النتيجة

 

المشروع كاملاً على Github 

كلمات دليلية: android list spinner
2
إعجاب
4085
مشاهدات
0
مشاركة
0
متابع

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !