ماهو 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 ليقوم بعرض هذه العناصر في 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 على سبيل المثال تحتوي على اسم العنصر الذي تم الضغط عليه كما هو ممثل بالكود التالي :

  • قمنا بإظهار توست عند اختيار عنصر ما,كما قمنا بأخذ اسم العنصر الذي تم الضغط عليه عبرالكود :
    ;()adapterView.getSelectedItem().toString

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

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

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

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

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