В моем приложении пользователи могут выбирать статьи для загрузки, используя разные критерии.Одним из них является год и месяц.Для этого я бы хотел AlertDialog со списком лет.Если пользователь затем щелкнет год, список расширится и покажет январь, февраль и т. Д.
Я знаю, как сделать расширяемый просмотр списка , используя SimpleExpandableListAdapter, но это не то, что мне нужно,Поскольку другие критерии (например, категория) также являются списком AlertDialogs, я хочу что-то похожее по внешнему виду.
Можно ли создать такой расширяемый список AlertDialog?
SOLUTION
Это то, чем я закончил на основе решения CommonsWare:
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();
Осталась только проблема: как реализовать прослушиватель onClick для AlertDialog?Обычно я делаю это в методе setItems (), но не использую setItems.
Я добавил myList.setOnItemClickListener после myList.setAdapter (), но он игнорируется.Ничего не происходит, когда я нажимаю на элемент:
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 ");
}
}
});
Решение проблемы щелчка:
Решение было довольно простым.Поскольку это расширяемый список, щелчки элементов захватываются самим списком для открытия дочерних элементов.Таким образом, обработчик событий никогда не вызывается.
Вместо этого вы должны реализовать OnChildClickListener (), который - как следует из названия - прослушивает дочерние щелчки!