قائمة الاختيار في الأندرويد | Spinner
ماهو 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
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !