In einer Android-Anwendung möchte ich eine benutzerdefinierte Listenansicht in einem AlertDialog anzeigen.
Wie kann ich das machen?
android
android-alertdialog
Brad Larson
quelle
quelle
Antworten:
Wird unter dem folgenden Code verwendet, um eine benutzerdefinierte Liste in AlertDialog anzuzeigen
quelle
Gemäß der Dokumentation gibt es drei Arten von Listen, die mit einem verwendet werden können
AlertDialog
:Ich werde unten jeweils ein Beispiel geben.
Traditionelle Single-Choice-Liste
Der Weg, um eine traditionelle Single-Choice-Liste zu erstellen, ist die Verwendung
setItems
.Java-Version
Es ist keine OK-Schaltfläche erforderlich, da das Steuerelement, sobald der Benutzer auf ein Listenelement klickt, an das zurückgegeben wird
OnClickListener
.Kotlin-Version
Optionsfeldliste
Der Vorteil der Optionsfeldliste gegenüber der herkömmlichen Liste besteht darin, dass der Benutzer die aktuelle Einstellung sehen kann. Sie können eine Optionsfeldliste erstellen
setSingleChoiceItems
.Java-Version
Ich habe das ausgewählte Element hier hart codiert, aber Sie können es mit einer Variablen für Klassenmitglieder in einem realen Projekt verfolgen.
Kotlin-Version
Checkbox-Liste
Sie können eine Kontrollkästchenliste erstellen
setMultiChoiceItems
.Java-Version
Hier habe ich fest codiert, welche Elemente in der Liste bereits überprüft wurden. Es ist wahrscheinlicher, dass Sie sie in einem verfolgen möchten
ArrayList<Integer>
. Weitere Informationen finden Sie im Dokumentationsbeispiel . Sie können die aktivierten Elemente auch auf einstellen,null
wenn immer alles deaktiviert sein soll.Kotlin-Version
Anmerkungen
context
VerwendengetApplicationContext()
Sie für den im obigen Code nicht verwendeten, sonst erhalten Sie eineIllegalStateException
(siehe hier für warum). Holen Sie sich stattdessen einen Verweis auf den Aktivitätskontext, z. B. mitthis
.setAdapter
odersetCursor
oder Weitergabe in eineCursor
oderListAdapter
in diesetSingleChoiceItems
odersetMultiChoiceItems
.Um alle obigen Beispiele zu testen, hatte ich nur ein einfaches Projekt mit einer einzigen Schaltfläche, das beim Klicken auf den Dialog angezeigt wurde:
verbunden
quelle
RecyclerView
im Layout dafür verwendet.BUTTON_POSITIVE
) oder die Position des angeklickten Elements".Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener)
:which
In Listener entspricht dies deronClick
Position des angeklickten Elements.Builder.setOnItemSelectedListener
wird keine Wirkung haben.Sie können einen benutzerdefinierten Dialog verwenden.
Benutzerdefiniertes Dialoglayout.
list.xml
In Ihrer Tätigkeit
Bearbeiten:
Alertdialog verwenden
custom.xml
Schnappen
quelle
quelle
ListAdapter
mitsetSingleChoiceItems
(sehr ähnlich wie oben genannt)Verwenden Sie den
import android.app.AlertDialog;
Import " " und dann schreiben Siequelle
show()
macht beides.Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();
das ist direkt aus dershow()
Dokumentation der MethodeDas ist zu einfach
quelle
Als Anfänger würde ich vorschlagen, dass Sie http://www.mkyong.com/android/android-custom-dialog-example/ durchgehen.
Ich werde zusammenfassen, was es im Grunde tut
Dialog
dialog.show()
Methode auf.quelle
In Kotlin:
quelle
So zeigen Sie einen benutzerdefinierten Layoutdialog mit einem benutzerdefinierten Listenelement an, der gemäß Ihren Anforderungen angepasst werden kann.
SCHRITT - 1 Erstellen Sie das Layout der Dialogbox, dh: -
R.layout.assignment_dialog_list_view
SCHRITT - 2 Erstellen Sie ein benutzerdefiniertes Listenelementlayout gemäß Ihrer Geschäftslogik
R.layout.item_assignment_dialog_list_layout
SCHRITT - 3 Erstellen Sie eine Datenmodellklasse Ihrer Wahl
SCHRITT - 4 Erstellen Sie einen benutzerdefinierten Adapter
}}
SCHRITT - 5 Erstellen Sie diese Funktion und stellen Sie in dieser Methode die ArrayList des obigen Datenmodells bereit
Schritt - 6 Geben Sie dem Dialogfeld einen Hintergrund mit runden Ecken
@ drawable / rechteck_round_corner_assignment_alert
quelle
Ist es nicht einfacher, eine Methode zu erstellen, die nach der Erstellung der EditText-Einheit in einem AlertDialog für den allgemeinen Gebrauch aufgerufen wird?
quelle
quelle