Можно ли создать расширяемый список AlertDialog?

В моем приложении пользователи могут выбирать статьи для загрузки, используя разные критерии. Один из них - год и месяц. Для этого мне нужен AlertDialog со списком лет. Если затем пользователь щелкнет год, список будет расширен и покажет январь, февраль и т. Д.

Я знаю, как сделать расширяемый список с помощью SimpleExpandableListAdapter, но это не то, что мне нужно. Так как другие критерии (например, категория) также являются списком AlertDialogs, мне нужно что-то похожее по внешнему виду.

Можно ли создать такой расширяемый список AlertDialog?

РЕШЕНИЕ

Это то, что я закончился на основе решения 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 (), который - как следует из названия - слушает дочерние клики!

13
задан marlar 15 July 2011 в 22:52
поделиться