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()
. פעולה זו תיידע את התצוגה המצורפת
שהנתונים השתנו וצריך לרענן את עצמו.
הערה: ב-Android Studio 3.6 ואילך,
התכונה קישור צפייה יכולה להחליף
findViewById()
שיחות ומספקות הגנה לגבי סוג זמן הידור (compile)
קוד שמקיים אינטראקציה עם תצוגות. מומלץ להשתמש בקישור תצוגה במקום
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);
לדיון נוסף אפשר לקרוא את הנושא Spinner.