AdapterView
เป็น
ViewGroup
ที่แสดงรายการที่โหลดลงในอะแดปเตอร์
อะแดปเตอร์ประเภทที่พบบ่อยที่สุดมาจากแหล่งข้อมูลแบบอาร์เรย์
คู่มือนี้แสดงวิธีดำเนินขั้นตอนสำคัญต่างๆ ที่เกี่ยวข้องกับการตั้งค่า อะแดปเตอร์
ใส่ข้อมูลในเลย์เอาต์
หากต้องการเพิ่มข้อมูลลงในเลย์เอาต์ที่คุณสร้างใน UI ของแอป ให้เพิ่มโค้ด ที่คล้ายกับข้อความต่อไปนี้
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()
เรียกใช้และให้ความปลอดภัยประเภทเวลาคอมไพล์สำหรับ
โค้ดที่โต้ตอบกับการดู ลองใช้การเชื่อมโยงมุมมองแทน
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);
สำหรับการสนทนาเพิ่มเติม โปรดดูที่หัวข้อเครื่องมือหมุน