Eigenes Dialogfeld mit setMultiChoiceItems
Ich schaffen will Weise kann der Benutzer wählen Sie die Optionen wie im Bild unten
Recht bin jetzt dabei die folgenden
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);
}
}
}
Aber ich möchte die option ALLE hinzufügen wie das Bild. Also ich glaube, ich muss zum erstellen einer benutzerdefinierten Dialog. Kann ich trotzdem erweitern die native setMultiChoiceItems, so dass es verringert sich mein Umgang mit dem code.
- Die
Builder
hat einesetCustomTitle(View)
Methode. - es muss eine check-box. wie im Bild gezeigt. so dass wenn ich klicke, dass ich möchte, um zu überprüfen oder deaktivieren Sie alle Inhalte in das Dialogfeld Inhalt.
- Sowie bieten einen Blick auf der Methode, die enthält eine
TextView
(der eigentliche Titel) und dieall
CheckBox
. - oh okay. kann u teilen sich alle Ressourcen, die für die gleichen wo kann ich sehen, wie es getan werden kann. ich dachte, wir müssen zum erstellen eines benutzerdefinierten Dialogfelds
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie wahrscheinlich verwenden, die
setCustomTitle()
Methode derAlertDialog.Builder
Klasse und erstellen Sie Ihre eigenen Titel mit dem Titel text und auch die alleCheckBox
so etwas wie dieses:wo
R.layout.custom_title
ist:Anderen Stil Optimierungen sollten vorgenommen werden, um zu machen es besser Aussehen.
Aber zu sehen, die gesamte dialog-layout, das Sie möchten vielleicht gehen mit einer custom
Dialog
Klasse, für die diesetMultiChoice()
Methode nicht verfügbar ist(aber am Ende wird es leicht zu replizieren).getActivity().getLayoutInflater()
View title = getLayoutInflater().inflate(R.layout.custom_title, null); ....setCustomTitle(title); title.findViewById(etc)
.Habe ich erreicht, was Sie anzeigen in Bild. was ich verwendet habe war von Benutzerdefinierten Dialogs als Sie denken zu Verwenden. ich hatte Listview innerhalb der xml-Datei.
Zunächst Definieren, initialisieren Sie die unten arraylist.
Unten ist der Code showDialog() die ich Verwendet habe.
Hier ist Meine logout_dialogue.xml :
hier ist Mein CatagorySummaryAdapter.java :
versuchen, durch zu gehen, es könnte Ihnen helfen.
Wollte ich auch weiterhin verwenden
setMultiChoiceItems()
mit meinem dialog, so dass anstelle der Erstellung einer benutzerdefinierten dialog, habe ich dies getan:Nicht zurückkehren, die
AlertDialog
sofort. Erstellen Sie dieAlertDialog.Builder
es zuerst so:AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
Legen Sie Ihre generator-Parameter:
Erstellen Sie dann die
AlertDialog
selbst aufrufencreate()
. Dies wird nicht zeigen Sie das Dialogfeld noch.AlertDialog dialog = builder.create();
Dann Holen Sie sich die
ListView
fügen Sie eine Kopfzeile und/oder Fußzeile, und gibt es zurück.Dies funktioniert auch mit dem @Luksprog ist
setCustomTitle()
so dass Sie insgesamt drei individuelle Bereiche ohne Implementierung einer benutzerdefinierten adapter. Der einzige mögliche Nachteil für einige ist, dass die Kopf-und Fußzeilen schriftrolle mit der Liste (die ist nur dann problematisch, wenn die Liste länger als der Bildschirm ist, natürlich).Hoffe, das hilft.
Wichtiges Update:
Verwenden Sie keine Kopfzeilen in eine checkbox-Liste. Es bewirkt, dass
AlertController.java
zu verrechnen, welche checkbox angekreuzt ist, nutzlos. Ein footer kann noch verwendet werden, was nützlich ist, in diesem Fall, aber nicht in meinem Fall, also ich Baue ein eigenes Dialogfeld.