Dialogue personnalisé avec setMultiChoiceItems
Je veux créer une manière, l'utilisateur peut sélectionner des options comme l'image ci-dessous
Maintenant fais le suivant
public static class CategoriesDialogFragment extends SherlockDialogFragment {
public static CategoriesDialogFragment newInstance(int title) {
CategoriesDialogFragment frag = new CategoriesDialogFragment();
Bundle args = new Bundle();
args.putInt("title", title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int title = getArguments().getInt("title");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(title)
.setMultiChoiceItems(_categories, _selections,
new DialogSelectionClickHandler())
.setPositiveButton(R.string.alert_dialog_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
((MainActivity) getActivity())
.doPositiveClick();
}
}).create();
/*
* .setNegativeButton(R.string.alert_dialog_cancel, new
* DialogInterface.OnClickListener() { public void
* onClick(DialogInterface dialog, int whichButton) {
* ((MainActivity) getActivity()) .doNegativeClick(); } })
*/
}
public class DialogSelectionClickHandler implements
DialogInterface.OnMultiChoiceClickListener {
public void onClick(DialogInterface dialog, int clicked,
boolean selected) {
//Log.i("ME", _options[clicked] + " selected: " + selected);
}
}
}
Mais je veux ajouter en option TOUT comme l'image. Donc, je pense que je vais avoir à construire un Dialogue personnalisé. Puis-je prolonger le natif de setMultiChoiceItems de sorte qu'il permettra de réduire mes manipulations du code.
Le
il doit avoir une case à cocher. comme indiqué dans l'image. de sorte que lorsque je clique sur que je veux de cocher ou de décocher tout le contenu à l'intérieur de la boîte de dialogue contenu.
Bien offrir à la Vue de cette méthode qui contient un
oh ok. u peut partager des ressources pour la même où je peux voir comment cela peut être fait. je pensais que nous avons besoin d'établir un dialogue personnalisé
Builder
a un setCustomTitle(View)
méthode.il doit avoir une case à cocher. comme indiqué dans l'image. de sorte que lorsque je clique sur que je veux de cocher ou de décocher tout le contenu à l'intérieur de la boîte de dialogue contenu.
Bien offrir à la Vue de cette méthode qui contient un
TextView
(le titre) et le all
CheckBox
.oh ok. u peut partager des ressources pour la même où je peux voir comment cela peut être fait. je pensais que nous avons besoin d'établir un dialogue personnalisé
OriginalL'auteur Harsha M V | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
Vous pourriez probablement utiliser le
setCustomTitle()
méthode de laAlertDialog.Builder
de classe et de construire votre propre titre qui a le titre et le texte aussi le tousCheckBox
, quelque chose comme ceci:où
R.layout.custom_title
est:Autre style ajustements devraient être faits pour le faire paraître mieux.
Mais en voyant l'ensemble de la boîte de dialogue mise en page que vous pouvez aller avec un custom
Dialog
classe, pour qui lasetMultiChoice()
méthode ne sera pas disponible(mais à la fin il sera facile à reproduire).@HarshaMV
getActivity().getLayoutInflater()
Je l'ai fait ci-dessus et j'ai mis en place mon titre, mais comment puis-je obtenir les valeurs des objets ? le findViewById ne fonctionne pas :/
Gonfler le titre personnalisé et stocker une référence à et de le modifier à partir de là.
View title = getLayoutInflater().inflate(R.layout.custom_title, null); ....setCustomTitle(title); title.findViewById(etc)
.belle réponse, merci beaucoup!
OriginalL'auteur Luksprog
J'ai réalisé la chose dont vous êtes l'affichage de l'image. ce que j'ai utilisé était la Coutume de Dialogue que vous envisagez d'Utiliser. j'avais utilisé Listview à l'intérieur du fichier xml.
Tout d'abord Définir initialiser ci-dessous la liste de tableaux.
Ci-dessous est le Code showDialog() j'ai Utilisé.
Ici est Mon logout_dialogue.xml :
voici Mon CatagorySummaryAdapter.java :
essayer d'aller à travers elle pourrait vous aider.
Je n'ai pas utiliser SherlockDialogFragment encore. donc pas en mesure de vous donner corriger la suggestion. vraiment désolé.
pas de problème. Pouvez-vous partager le code à faire pour tout sélectionner et désélectionner tout aussi. Juste que u mentionné u ont atteint cet objectif. je pense que nous pouvons facilement port ur du code de DialogFragment
j'ai édité ma réponse. prendre un coup d'oeil. et laissez-moi savoir si vous trouvez des difficultés.
OriginalL'auteur Bhavesh Patadiya
Je voulais aussi garder à l'aide de
setMultiChoiceItems()
avec mon dialogue, et donc au lieu de créer un dialogue personnalisé, j'ai fait ça:Ne pas retourner le
AlertDialog
immédiatement. Créer leAlertDialog.Builder
d'abord comme ceci:AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
Définir votre générateur de paramètres:
Ensuite créer le
AlertDialog
lui-même l'appel decreate()
. Ce ne sera pas afficher la boîte de dialogue encore.AlertDialog dialog = builder.create();
Puis obtenir le
ListView
, ajouter un en-tête et/ou pied de page, et de le retourner.Cela fonctionne aussi avec @Luksprog de
setCustomTitle()
vous donnant un total de trois personnalisable espaces sans avoir à mettre en œuvre un adaptateur personnalisé. Le seul inconvénient possible pour certains, c'est que les en-têtes et pieds de page, faites défiler jusqu'à la liste, ce qui est problématique si la liste est plus longue que l'écran, évidemment).Espère que cette aide.
Mise À Jour Importante:
Ne pas utiliser des en-têtes dans une liste de case à cocher. Il provoque
AlertController.java
à mésestimer dont la case est cochée, le rendant inutilisable. Un pied de page peut toujours être utilisé, ce qui est utile dans ce cas, mais pas dans mon cas, donc je suis en train de construire un dialogue personnalisé.OriginalL'auteur willlma