Adapter Görünümü

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da düzenlerle nasıl çalışacağınızı öğrenin.

AdapterView, bir bağdaştırıcıya yüklenen öğeleri görüntüleyen ViewGroup'dır. En yaygın bağdaştırıcı türü, dizi tabanlı bir veri kaynağından gelir.

Bu kılavuzda, bağdaştırıcı kurulumuyla ilgili çeşitli temel adımların nasıl tamamlanacağı gösterilmektedir.

Düzeni verilerle doldurma

Uygulamanızın kullanıcı arayüzünde oluşturduğunuz düzene veri eklemek için aşağıdakine benzer bir kod ekleyin:

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

CursorAdapter ile kullanılan projeksiyonda People._ID sütununun olması gerektiğini unutmayın. Aksi takdirde istisna alırsınız.

Uygulamanızın kullanım ömrü boyunca, bağdaştırıcınız tarafından okunan temel verileri değiştirirseniz notifyDataSetChanged() işlevini çağırmanız gerekir. Bu, eklenen View'a verilerin değiştirildiğini ve kendisini yenilemesi gerektiğini bildirir.

Not: Android Studio 3.6 ve sonraki sürümlerde görünüm bağlama özelliği, findViewById() çağrılarının yerini alabilir ve görünümlerle etkileşimde bulunan kod için derleme zamanı tür güvenliği sağlar. findViewById() yerine görünüm bağlamayı kullanabilirsiniz.

Kullanıcı seçimlerini işleme

Kullanıcının seçimini, sınıfın AdapterView.OnItemClickListener üyesini bir dinleyiciye ayarlayarak ve seçim değişikliklerini yakalayarak işlersiniz.

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

Daha fazla tartışma için Spinner konusuna bakın.