Visualizzazione elenco Android

Android ListViewè una vista che raggruppa diversi elementi e li visualizza in un elenco scorrevole verticale. Gli elementi dell'elenco vengono inseriti automaticamente nell'elenco utilizzando un fileAdapter che estrae il contenuto da una fonte come un array o un database.

Visualizzazione elenco

Un adattatore collega effettivamente i componenti dell'interfaccia utente e l'origine dati che inseriscono i dati nel componente dell'interfaccia utente. L'adattatore conserva i dati e invia i dati alla vista dell'adattatore, la vista può prendere i dati dalla vista dell'adattatore e mostra i dati su diverse viste come la casella di selezione, la visualizzazione elenco, la visualizzazione griglia ecc.

Il ListView e GridView sono sottoclassi di AdapterView e possono essere popolati legandoli a un file Adapter, che recupera i dati da un'origine esterna e crea una vista che rappresenta ogni voce di dati.

Android fornisce diverse sottoclassi di Adapter utili per recuperare diversi tipi di dati e creare visualizzazioni per AdapterView (ad esempio ListView o GridView). Gli adattatori comuni sonoArrayAdapter,Base Adapter, CursorAdapter, SimpleCursorAdapter,SpinnerAdapter e WrapperListAdapter. Vedremo esempi separati per entrambi gli adattatori.

Attributi ListView

Di seguito sono riportati gli attributi importanti specifici di GridView:

Suor n Attributo e descrizione
1

android:id

Questo è l'ID che identifica in modo univoco il layout.

2

android:divider

Questo è disegnabile o colore per disegnare tra gli elementi dell'elenco.

3

android:dividerHeight

Specifica l'altezza del divisore. Questo potrebbe essere in px, dp, sp, in o mm.

4

android:entries

Specifica il riferimento a una risorsa di matrice che popolerà ListView.

5

android:footerDividersEnabled

Se impostato su false, ListView non disegnerà il divisore prima di ogni visualizzazione del piè di pagina. Il valore predefinito è vero.

6

android:headerDividersEnabled

Quando impostato su false, ListView non disegnerà il divisore dopo ogni visualizzazione dell'intestazione. Il valore predefinito è vero.

ArrayAdapter

È possibile utilizzare questo adattatore quando l'origine dati è un array. Per impostazione predefinita, ArrayAdapter crea una vista per ogni elemento dell'array chiamando toString () su ogni elemento e posizionando il contenuto in unTextView. Considera di avere un array di stringhe che vuoi visualizzare in un ListView, inizializzane un nuovoArrayAdapter utilizzando un costruttore per specificare il layout per ogni stringa e l'array di stringhe -

ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.ListView,StringArray);

Ecco gli argomenti per questo costruttore:

  • Primo argomento thisè il contesto dell'applicazione. Nella maggior parte dei casi, tienilothis.

  • Il secondo argomento sarà il layout definito nel file XML e con estensione TextView per ogni stringa nell'array.

  • L'argomento finale è un array di stringhe che verrà popolato nella vista testo.

Dopo aver creato l'adattatore di array, chiamare semplicemente setAdapter() sul tuo ListView oggetto come segue -

ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);

Definirai la tua visualizzazione elenco nella directory res / layout in un file XML. Per il nostro esempio utilizzeremo il file activity_main.xml.

Esempio

Di seguito è riportato l'esempio che ti guiderà attraverso semplici passaggi per mostrare come creare la tua applicazione Android utilizzando ListView. Segui i seguenti passaggi per modificare l'applicazione Android che abbiamo creato nel capitolo Hello World Example -

Passo Descrizione
1 Utilizzerai l'IDE di Android Studio per creare un'applicazione Android e chiamarla ListDisplay in un pacchetto com.example.ListDisplay come spiegato nel capitolo Hello World Example .
2 Modifica il contenuto predefinito del file res / layout / activity_main.xml per includere il contenuto ListView con attributi autoesplicativi.
3 Non è necessario modificare string.xml, Android Studio si occupa delle costanti di stringa predefinite.
4 Crea un file di visualizzazione del testo res / layout / activity_listview.xml . Questo file avrà l'impostazione per visualizzare tutti gli elementi dell'elenco. Quindi puoi personalizzare i suoi caratteri, imbottitura, colore ecc. Usando questo file.
6 Esegui l'applicazione per avviare l'emulatore Android e verifica il risultato delle modifiche apportate nell'applicazione.

Di seguito è riportato il contenuto del file di attività principale modificato src/com.example.ListDisplay/ListDisplay.java. Questo file può includere ciascuno dei metodi fondamentali del ciclo di vita.

package com.example.ListDisplay;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListDisplay extends Activity {
   // Array of strings...
   String[] mobileArray = {"Android","IPhone","WindowsMobile","Blackberry",
      "WebOS","Ubuntu","Windows7","Max OS X"};
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      ArrayAdapter adapter = new ArrayAdapter<String>(this, 
         R.layout.activity_listview, mobileArray);
      
      ListView listView = (ListView) findViewById(R.id.mobile_list);
      listView.setAdapter(adapter);
   }
}

Di seguito sarà il contenuto di res/layout/activity_main.xml file -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   tools:context=".ListActivity" >

   <ListView
      android:id="@+id/mobile_list"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
   </ListView>
 
</LinearLayout>

Di seguito sarà il contenuto di res/values/strings.xml per definire due nuove costanti -

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">ListDisplay</string>
   <string name="action_settings">Settings</string>
</resources>

Di seguito sarà il contenuto di res/layout/activity_listview.xml file -

<?xml version="1.0" encoding="utf-8"?>
<!--  Single List Item Design -->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/label"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:padding="10dip"
   android:textSize="16dip"
   android:textStyle="bold" >
</TextView>

Proviamo a eseguire il nostro file modificato Hello World!applicazione che abbiamo appena modificato. Presumo che tu abbia creato il tuoAVDdurante l'impostazione dell'ambiente. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Android Studio installa l'app sul tuo AVD e la avvia e se tutto va bene con la configurazione e l'applicazione, verrà visualizzata la seguente finestra dell'emulatore:

SimpleCursorAdapter

È possibile utilizzare questo adattatore quando l'origine dati è un cursore del database. Quando si utilizza SimpleCursorAdapter , è necessario specificare un layout da utilizzare per ogni riga nel fileCursor e quali colonne nel Cursore devono essere inserite in quali visualizzazioni del layout.

Ad esempio, se si desidera creare un elenco di nomi e numeri di telefono di persone, è possibile eseguire una query che restituisca un Cursore contenente una riga per ogni persona e colonne per i nomi e i numeri. Quindi crei una matrice di stringhe che specifica quali colonne del Cursore desideri nel layout per ogni risultato e una matrice di numeri interi che specifica le viste corrispondenti che ogni colonna deve essere posizionata -

String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME, 
   ContactsContract.CommonDataKinds.Phone.NUMBER};
int[] toViews = {R.id.display_name, R.id.phone_number};

Quando crei un'istanza di SimpleCursorAdapter, passa il layout da utilizzare per ogni risultato, il Cursor contenente i risultati e questi due array:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
   R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
        
ListView listView = getListView();
listView.setAdapter(adapter);

Il SimpleCursorAdapter crea quindi una vista per ogni riga nel Cursore utilizzando il layout fornito inserendo ogni elemento da Colonne nel corrispondente toViews Visualizza.