ماهو 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