AdapterView

AdapterView adalah ViewGroup yang menampilkan item yang dimuat ke dalam adaptor. Jenis adaptor yang paling umum berasal dari sumber data berbasis array.

Panduan ini menunjukkan cara menyelesaikan beberapa langkah penting terkait penyiapan adaptor.

Mengisi tata letak dengan data

Untuk menambahkan data ke tata letak yang Anda buat di UI aplikasi, tambahkan kode yang mirip dengan berikut ini:

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);
    

Perhatikan bahwa kolom People._ID dalam proyeksi harus digunakan dengan CursorAdapter. Jika tidak, Anda akan mendapatkan pengecualian.

Jika, selama masa aktif aplikasi, Anda mengubah data pokok yang dibaca oleh Adaptor, Anda perlu memanggil notifyDataSetChanged(). Tindakan ini akan memberi tahu View terkait bahwa data telah diubah dan akan otomatis dimuat ulang.

Menangani pilihan pengguna

Tangani pilihan pengguna dengan menetapkan anggota AdapterView.OnItemClickListener class ke sebuah pemroses dan mengambil perubahan pilihan.

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);
    

Untuk pembahasan lebih lanjut, baca topik Spinner.