AdapterView
est un(e) .
ViewGroup
qui affiche les éléments chargés dans un adaptateur. La
le type d'adaptateur le plus courant provient d'une source de données basée sur des tableaux.
Ce guide vous explique comment effectuer plusieurs étapes clés de la configuration un adaptateur.
Remplir la mise en page avec des données
Pour ajouter des données à la mise en page que vous créez dans l'UI de votre application, ajoutez du code semblable à ce qui suit:
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);
Notez qu'il est nécessaire d'utiliser la colonne People._ID dans la projection avec CursorAdapter. sinon vous obtiendrez une exception.
Si, au cours de la durée de vie de votre application, vous modifiez les données sous-jacentes lues par votre Adapter,
vous devez appeler notifyDataSetChanged()
. La vue jointe en sera informée
que les données ont été modifiées et qu'il
doit s'actualiser tout seul.
Remarque:Avec Android Studio 3.6 ou version ultérieure, le
la fonctionnalité de liaison de vue peut remplacer
findViewById()
appelle et assure la sûreté du typage au moment de la compilation pour
du code qui interagit avec les vues. Envisagez d'utiliser la liaison de vue au lieu
findViewById()
Gérer les sélections des utilisateurs
Vous gérez la sélection de l'utilisateur en définissant le membre AdapterView.OnItemClickListener
de la classe sur un écouteur.
et détecter les changements de sélection.
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);
Pour plus de détails, consultez la rubrique Spinner.