Dans une application Android, je souhaite afficher une vue de liste personnalisée dans un AlertDialog.
Comment puis-je faire ceci?
android
android-alertdialog
Brad Larson
la source
la source
Réponses:
Code ci-dessous utilisé pour afficher la liste personnalisée dans AlertDialog
la source
Selon la documentation , il existe trois types de listes pouvant être utilisées avec
AlertDialog
:Je vais donner un exemple de chacun ci-dessous.
Liste traditionnelle à choix unique
La façon de faire une liste traditionnelle à choix unique est d'utiliser
setItems
.Version Java
Il n'y a pas besoin d'un bouton OK car dès que l'utilisateur clique sur un élément de liste, le contrôle est renvoyé au
OnClickListener
.Version Kotlin
Liste des boutons radio
L'avantage de la liste des boutons radio par rapport à la liste traditionnelle est que l'utilisateur peut voir quel est le paramètre actuel. La façon de faire une liste de boutons radio est d'utiliser
setSingleChoiceItems
.Version Java
J'ai codé en dur l'élément choisi ici, mais vous pouvez le suivre avec une variable de membre de classe dans un projet réel.
Version Kotlin
Liste des cases à cocher
La façon de faire une liste de cases à cocher est d'utiliser
setMultiChoiceItems
.Version Java
Ici, j'ai codé en dur les éléments de la liste qui ont déjà été vérifiés. Il est plus probable que vous souhaitiez les suivre dans un fichier
ArrayList<Integer>
. Voir l' exemple de documentation pour plus de détails. Vous pouvez également définir les éléments cochés surnull
si vous souhaitez toujours que tout commence sans contrôle.Version Kotlin
Remarques
context
dans le code ci-dessus, n'utilisez pasgetApplicationContext()
ou vous obtiendrez unIllegalStateException
(voir ici pourquoi). Au lieu de cela, obtenez une référence au contexte d'activité, comme avecthis
.setAdapter
ousetCursor
ou en passant unCursor
ouListAdapter
dans lesetSingleChoiceItems
ousetMultiChoiceItems
.Pour tester tous les exemples ci-dessus, je viens d'avoir un projet simple avec un seul bouton qui a montré la boîte de dialogue lorsque vous cliquez dessus:
en relation
la source
RecyclerView
dans la mise en page pour cela.BUTTON_POSITIVE
) ou la position de l'élément cliqué".Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener)
:which
dans l'écouteuronClick
sera égal à la position de l'élément cliqué.Builder.setOnItemSelectedListener
n'aura aucun effet.Vous pouvez utiliser une boîte de dialogue personnalisée.
Disposition de dialogue personnalisée.
list.xml
Dans votre activité
Éditer:
Utilisation de alertdialog
custom.xml
Casser
la source
la source
ListAdapter
avecsetSingleChoiceItems
(très similaire à l'appel ci-dessus)Utilisez l'
import android.app.AlertDialog;
importation " " et vous écrivezla source
show()
fait les deux.Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();
qui provient directement de lashow()
documentation de la méthodeC'est trop simple
la source
En tant que débutant, je vous suggère de passer par http://www.mkyong.com/android/android-custom-dialog-example/
Je vais résumer ce qu'il fait
Dialog
dialog.show()
méthode.la source
À Kotlin:
la source
Voici comment afficher la boîte de dialogue de mise en page personnalisée avec un élément de liste personnalisé, peut être personnalisé selon vos besoins.
ÉTAPE - 1 Créez la disposition de la boîte de dialogue, c'est-à-dire: -
R.layout.assignment_dialog_list_view
ÉTAPE - 2 Créez une disposition d'élément de liste personnalisée selon votre logique métier
R.layout.item_assignment_dialog_list_layout
ÉTAPE - 3 Créez une classe de modèle de données de votre choix
ÉTAPE - 4 Créez un adaptateur personnalisé
}
ÉTAPE - 5 Créez cette fonction et fournissez ArrayList du modèle de données ci-dessus dans cette méthode
Étape - 6 Donner l'arrière-plan du coin arrondi à la boîte de dialogue
@ drawable / rectangle_round_corner_assignment_alert
la source
N'est-il pas plus simple de faire une méthode à appeler après la création de l'unité EditText dans un AlertDialog, pour une utilisation générale?
la source
la source