W mojej aplikacji użytkownicy mogą wybierać artykuły do pobrania przy użyciu różnych kryteriów. Jednym z nich jest rok i miesiąc. Do tego chciałbym AlertDialog z listą lat. Jeżeli użytkownik kliknie na rok, lista będzie rozwijać i pokazać, styczeń, luty itdCzy można utworzyć rozwijaną listę AlertDialog?
wiem jak zrobić rozszerzalny listview użyciu SimpleExpandableListAdapter ale to nie jest to, co chcę. Ponieważ pozostałe kryteria (np. Kategoria) są również na liście AlertDialogs, chcę czegoś podobnego w wyglądzie i odczuciu.
Czy można wykonać taką rozszerzalną listę AlertDialog?
ROZWIĄZANIE
To, co skończyło się w oparciu o rozwiązania CommonsWare za:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select something");
ExpandableListView myList = new ExpandableListView(this);
MyExpandableListAdapter myAdapter = new MyExpandableListAdapter();
myList.setAdapter(myAdapter);
builder.setView(myList);
AlertDialog dialog = builder.create();
dialog.show();
Jedynym problemem pozostały: w jaki sposób zaimplementować słuchacza onClick dla AlertDialog? Normalnie zrobiłbym to w metodzie setItems(), ale nie używam setItems.
Dodałem myList.setOnItemClickListener po myList.setAdapter(), ale jest on ignorowany. Nic się nie dzieje, gdy kliknę element:
myList.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
try {
Toast.makeText(ExpandableList1.this, "You clicked me", Toast.LENGTH_LONG).show();
}
catch(Exception e) {
System.out.println("something wrong here ");
}
}
});
rozwiązanie problemu kliknij:
Roztwór dość prosta. Ponieważ jest to lista rozwijana, kliknięcia elementów są przechwytywane przez samą listę, aby otworzyć elementy podrzędne. W związku z tym program obsługi zdarzeń nigdy nie jest wywoływany.
Zamiast tego należy zaimplementować OnChildClickListener(), która - jak sugeruje nazwa - nasłuchuje kliknięć podrzędnych!
Hmm, jestem całkiem nowy w systemie Android, ale spróbuję ... – marlar
Pracowałem trochę nad tym i mam podstawowy pomysł, ale jak utworzyć listę? Normalnie utworzyłbym działanie i nadmuchałem je z xml, ale w tym przypadku nie będę pokazywał listview z wyjątkiem okna dialogowego. Więc w jakiś sposób muszę utworzyć rozwijany listview wewnątrz mojej głównej działalności i przekazać go za pomocą setView. Jak mogę to zrobić? Dzięki. – marlar
@marlar: Przepełnij zasobem XML układu, który zawiera "ExpandableListView" lub utwórz przez Javę (np. Nowy ExpandableListView (this) '). – CommonsWare