W aplikacji na Androida chcę wyświetlić niestandardowy widok listy w AlertDialog.
W jaki sposób mogę to zrobić?
android
android-alertdialog
Brad Larson
źródło
źródło
Odpowiedzi:
Używany poniżej kodu do wyświetlania listy niestandardowej w AlertDialog
źródło
Zgodnie z dokumentacją istnieją trzy rodzaje list, których można używać z
AlertDialog
:Podam przykład każdego z nich poniżej.
Tradycyjna lista jednokrotnego wyboru
Sposobem na utworzenie tradycyjnej listy pojedynczego wyboru jest użycie
setItems
.Wersja Java
Nie ma potrzeby używania przycisku OK, ponieważ jak tylko użytkownik kliknie element listy, kontrolka jest zwracana do
OnClickListener
.Wersja Kotlin
Lista przycisków opcji
Zaletą listy przycisków opcji w porównaniu z listą tradycyjną jest to, że użytkownik może zobaczyć aktualne ustawienie. Sposobem na utworzenie listy przycisków opcji jest użycie
setSingleChoiceItems
.Wersja Java
Tutaj zakodowałem wybrany element, ale można go śledzić za pomocą zmiennej członka klasy w prawdziwym projekcie.
Wersja Kotlin
Lista pól wyboru
Sposobem na utworzenie listy pól wyboru jest użycie
setMultiChoiceItems
.Wersja Java
Tutaj na stałe zapisałem, które elementy na liście zostały już sprawdzone. Bardziej prawdopodobne jest, że będziesz chciał je śledzić w
ArrayList<Integer>
. Zobacz przykład dokumentacji, aby uzyskać więcej informacji. Możesz również ustawić zaznaczone elementy na,null
jeśli zawsze chcesz, aby wszystko zaczęło się odznaczone.Wersja Kotlin
Notatki
context
powyższego kodu nie używaj,getApplicationContext()
bo dostanieszIllegalStateException
( dlaczego tutaj ). Zamiast tego uzyskaj odwołanie do kontekstu działania, na przykład withthis
.setAdapter
lubsetCursor
lub przechodząc w sposóbCursor
lubListAdapter
wsetSingleChoiceItems
lubsetMultiChoiceItems
.Aby przetestować wszystkie powyższe przykłady, po prostu miałem prosty projekt z jednym przyciskiem, niż pokazałem okno dialogowe po kliknięciu:
Związane z
źródło
RecyclerView
tego celu układu.BUTTON_POSITIVE
) lub pozycja klikniętego elementu”.Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener)
:which
w listeneronClick
będzie równa klikniętej pozycji elementu.Builder.setOnItemSelectedListener
nie będzie miało wpływu.Możesz użyć niestandardowego okna dialogowego.
Niestandardowy układ okna dialogowego.
list.xml
W twojej działalności
Edytować:
Korzystanie z alertdialog
custom.xml
Kłapnięcie
źródło
źródło
ListAdapter
setSingleChoiceItems
Użyj
import android.app.AlertDialog;
importu „ ”, a następnie napiszeszźródło
show()
robi oba.Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();
czyli bezpośrednio zshow()
dokumentacja metody zaTo jest zbyt proste
źródło
Jako początkujący proponuję przejrzeć http://www.mkyong.com/android/android-custom-dialog-example/
Opiszę, co to właściwie robi
Dialog
dialog.show()
metodęźródło
W Kotlinie:
źródło
W ten sposób można wyświetlić okno dialogowe układu niestandardowego z niestandardowym elementem listy, które można dostosować zgodnie z wymaganiami.
KROK - 1 Utwórz układ DialogBox, tzn .: -
R.layout.assignment_dialog_list_view
KROK - 2 Utwórz niestandardowy układ pozycji listy zgodnie z logiką biznesową
R.layout.item_assignment_dialog_list_layout
KROK - 3 Utwórz klasę modelu danych według własnego wyboru
KROK - 4 Utwórz niestandardowy adapter
}
KROK - 5 Utwórz tę funkcję i podaj ArrayList powyższego modelu danych w tej metodzie
Krok - 6 Podanie tła okrągłego rogu do okna dialogowego
@ drawable / rectangle_round_corner_assignment_alert
źródło
Czy nie jest łatwiej stworzyć metodę, która ma być wywoływana po utworzeniu jednostki EditText w AlertDialog, do ogólnego użytku?
źródło
źródło