AdapterView
هو
ViewGroup
تعرض العناصر التي تم تحميلها في محوِّل. تشير رسالة الأشكال البيانية
يأتي النوع الأكثر شيوعًا من المحوّلات من مصدر بيانات مستنِد إلى مصفوفة.
يوضّح هذا الدليل كيفية إكمال العديد من الخطوات الرئيسية ذات الصلة بإعداد محوّل.
ملء التخطيط بالبيانات
لإضافة بيانات إلى التنسيق الذي تنشئه في واجهة المستخدم لتطبيقك، أضِف رمزًا مشابه لما يلي:
Kotlin
val PROJECTION = arrayOf(Contacts.People._ID, People.NAME) ... // Get a Spinner and bind it to an ArrayAdapter that // references a String array. val spinner1: Spinner = findViewById(R.id.spinner1) val adapter1 = ArrayAdapter.createFromResource( this, R.array.colors, android.R.layout.simple_spinner_item) adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner1.adapter = adapter1 // Load a Spinner and bind it to a data query. val spinner2: Spinner = findViewById(R.id.spinner2) val cursor: Cursor = managedQuery(People.CONTENT_URI, PROJECTION, null, null, null) val adapter2 = SimpleCursorAdapter(this, // Use a template that displays a text view android.R.layout.simple_spinner_item, // Give the cursor to the list adapter cursor, // Map the NAME column in the people database to... arrayOf(People.NAME), // The "text1" view defined in the XML template intArrayOf(android.R.id.text1)) adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner2.adapter = adapter2
Java
// Get a Spinner and bind it to an ArrayAdapter that // references a String array. Spinner s1 = (Spinner) findViewById(R.id.spinner1); ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.colors, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s1.setAdapter(adapter); // Load a Spinner and bind it to a data query. private static String[] PROJECTION = new String[] { People._ID, People.NAME }; Spinner s2 = (Spinner) findViewById(R.id.spinner2); Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null); SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, // Use a template // that displays a // text view cur, // Give the cursor to the list adapter new String[] {People.NAME}, // Map the NAME column in the // people database to... new int[] {android.R.id.text1}); // The "text1" view defined in // the XML template adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s2.setAdapter(adapter2);
يُرجى ملاحظة أنّه من الضروري أن يكون لديك عمود "People._ID" في الإسقاط المستخدَم مع CursorAdapter. وإلا ستحصل على استثناء.
وإذا غيّرت البيانات الأساسية التي يقرأها "المحوّل" أثناء فترة صلاحية تطبيقك
يجب الاتصال بـ notifyDataSetChanged()
. سيؤدي ذلك إلى إرسال إشعار إلى العرض المرفق.
بأن البيانات قد تم تغييرها وينبغي تحديثها تلقائيًا.
ملاحظة: في الإصدار 3.6 من "استوديو Android" والإصدارات الأحدث،
يمكن أن تحل ميزة ربط العرض محل
findViewById()
إجراء المكالمات وتوفير الأمان في وقت التجميع
يتفاعل مع طرق العرض. يمكنك استخدام ربط طرق العرض بدلاً من
findViewById()
التعامل مع اختيارات المستخدمين
يمكنك التحكّم في اختيار المستخدم من خلال ضبط دور المستمع لعضو الصف AdapterView.OnItemClickListener
.
التقاط تغييرات التحديد.
Kotlin
val historyView: ListView = findViewById(R.id.history) historyView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id -> Toast.makeText(context, "You've got an event", Toast.LENGTH_SHORT).show() }
Java
// Create a message handling object as an anonymous class. private OnItemClickListener messageClickedHandler = new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { // Display a messagebox. Toast.makeText(context,"You've got an event",Toast.LENGTH_SHORT).show(); } }; // Now hook into our object and set its onItemClickListener member // to our class handler object. historyView = (ListView)findViewById(R.id.history); historyView.setOnItemClickListener(messageClickedHandler);
لمزيد من النقاش، يمكنك الاطّلاع على موضوع أداة تثبيت المعلومات.