Ajouter des icônes de chargement à votre application

Les icônes de chargement permettent de sélectionner rapidement une valeur parmi un ensemble. Par défaut, une icône de chargement affiche la valeur actuellement sélectionnée. Appuyer sur l'icône de chargement affiche un menu affichant toutes les autres valeurs que l'utilisateur peut sélectionner.

Figure 1. Menu sur une icône de chargement, montrant les options disponibles valeurs.

Vous pouvez ajouter une icône de chargement à votre mise en page avec la Spinner , ce que vous faites généralement dans votre mise en page XML avec Élément <Spinner>. Ce processus est illustré ci-dessous Exemple:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

Pour remplir l'icône de chargement avec une liste d'options, spécifiez une SpinnerAdapter dans votre Activity ou Fragment le code source.

Si vous utilisez des composants Material Design, exposé Les menus déroulants équivalent à Spinner.

Indiquer les choix de l'utilisateur dans l'icône de chargement

Les choix que vous fournissez pour la roue de sélection des couleurs peuvent provenir de n'importe quelle source, mais vous vous devez les fournir via un SpinnerAdapter, par exemple ArrayAdapter si les options sont disponibles dans un tableau CursorAdapter si les choix sont disponibles à partir d'une requête de base de données.

Par exemple, si les options disponibles pour votre icône de chargement sont prédéterminées, vous pouvez lui fournir un tableau de chaînes défini dans ressource de chaîne fichier :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>

Avec un tableau comme celui-ci, vous pouvez utiliser le code suivant dans votre Activity ou Fragment pour fournir à l'icône de chargement le à l'aide d'une instance de ArrayAdapter:

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
// Create an ArrayAdapter using the string array and a default spinner layout.
ArrayAdapter.createFromResource(
        this,
        R.array.planets_array,
        android.R.layout.simple_spinner_item
).also { adapter ->
    // Specify the layout to use when the list of choices appears.
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    // Apply the adapter to the spinner.
    spinner.adapter = adapter
}

Java

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
// Create an ArrayAdapter using the string array and a default spinner layout.
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this,
        R.array.planets_array,
        android.R.layout.simple_spinner_item
);
// Specify the layout to use when the list of choices appears.
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner.
spinner.setAdapter(adapter);

La createFromResource() vous permet de créer un ArrayAdapter à partir du tableau de chaînes. La Le troisième argument de cette méthode est une ressource de mise en page qui définit la manière l'option sélectionnée s'affiche dans l'icône de chargement. La plate-forme fournit simple_spinner_item mise en page. Il s'agit de la mise en page par défaut, sauf si vous souhaitez définir votre propre mise en page pour l’apparence de la roue de sélection des couleurs.

Appeler setDropDownViewResource(int) pour spécifier la mise en page que l'adaptateur utilise pour afficher la liste des options de chargement. simple_spinner_dropdown_item est une autre mise en page standard définie par la plateforme.

Appeler setAdapter() pour appliquer l'adaptateur à votre Spinner.

Répondre aux sélections des utilisateurs

Lorsque l'utilisateur sélectionne un élément du menu de l'icône de chargement, Spinner objet reçoit un événement "on-item-selected".

Pour définir le gestionnaire d'événements de sélection pour une icône de chargement, implémentez la AdapterView.OnItemSelectedListener de commande et la couche correspondante onItemSelected() . Voici, par exemple, une implémentation de l'interface dans une Activity:

Kotlin

class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener {
    ...
    override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
        // An item is selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos).
    }

    override fun onNothingSelected(parent: AdapterView<*>) {
        // Another interface callback.
    }
}

Java

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...
    public void onItemSelected(AdapterView<?> parent, View view,
            int pos, long id) {
        // An item is selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos).
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback.
    }
}

La L'interface AdapterView.OnItemSelectedListener nécessite onItemSelected() et onNothingSelected() méthodes de rappel.

Spécifiez l'implémentation de l'interface en appelant setOnItemSelectedListener():

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
spinner.onItemSelectedListener = this

Java

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
spinner.setOnItemSelectedListener(this);

Si vous implémentez AdapterView.OnItemSelectedListener avec votre Activity ou votre Fragment, comme dans l'exemple précédent, vous pouvez transmettre this en tant qu'instance d'interface.