323 votes

Comment afficher une vue liste dans une boîte de dialogue d'alerte Android?

Dans une application Android, je veux afficher une liste personnalisée dans une boîte de dialogue AlertDialog.

Comment puis-je faire cela?

6voto

Jaydeep purohit Points 805

C'est trop simple

final CharSequence[] items = {"Prendre une photo", "Choisir dans la bibliothèque", "Annuler"};

AlertDialog.Builder builder = new AlertDialog.Builder(MyProfile.this);

builder.setTitle("Ajouter une photo!");
builder.setItems(items, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int item) {
        if (items[item].equals("Prendre une photo")) {
            getCapturesProfilePicFromCamera();
        } else if (items[item].equals("Choisir dans la bibliothèque")) {
            getProfilePicFromGallery();
        } else if (items[item].equals("Annuler")) {
            dialog.dismiss();
        }
    }
});
builder.show();

4voto

Carl Saldanha Points 3143

En tant que débutant, je vous suggérais de consulter http://www.mkyong.com/android/android-custom-dialog-example/

Je vais vous expliquer ce que cela fait essentiellement

  1. Crée un fichier XML pour la boîte de dialogue et l'activité principale
  2. Dans l'activité principale, crée un objet de la classe android Dialog à l'endroit requis
  3. Ajoute un style personnalisé et du texte basé sur le fichier XML
  4. Appelle la méthode dialog.show().

4voto

Delacrix Morgan Points 205

Vous pouvez réellement créer un simple tableau avec une boîte de dialogue d'alerte comme ceci.

 val sexArray = arrayOf("Homme", "Femme")
 val selectedPosition = 0

 AlertDialog.Builder(requireContext())
    .setSingleChoiceItems(sexArray, 0) { dialog, position ->
        val selectedSex = sexArray[position]
    }.show()

3voto

Varsha Prabhakar Points 171

En Kotlin:

fun showListDialog(context: Context){
    // configuration du constructeur d'alerte
    val builder = AlertDialog.Builder(context)
    builder.setTitle("Choisissez un élément")

    // ajouter des éléments à la liste
    val listItems = arrayOf("Élément 0","Élément 1","Élément 2")
    builder.setItems(listItems) { dialog, which ->
        when (which) {
            0 ->{
                Toast.makeText(context,"Vous avez cliqué sur l'élément 0",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            1->{
                Toast.makeText(context,"Vous avez cliqué sur l'élément 1",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            2->{
                Toast.makeText(context,"Vous avez cliqué sur l'élément 2",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
        }
    }

    // créer et afficher la boîte de dialogue d'alerte
    val dialog = builder.create()
    dialog.show()
}

1voto

Jan Bergström Points 195

N'est-il pas plus simple de créer une méthode à appeler après la création de l'unité EditText dans une AlertDialog, pour un usage général ?

public static void EditTextListPicker(final Activity activity, final EditText EditTextItem, final String SelectTitle, final String[] SelectList) {
    EditTextItem.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setTitle(SelectTitle);
            builder.setItems(SelectList, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogInterface, int item) {
                    EditTextItem.setText(SelectList[item]);
                }
            });
            builder.create().show();
            return false;
        }
    });
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X