2016-05-23 3 views
3

У меня есть пользовательский 3-уровневый расширяемый список. Сделано с 2 адаптерами, которые продлевают BaseExpandableListAdapter: ParentAdapter и ChildAdapter.Android ExpandableListView как сохранить расширенное/свернутое состояние?

Внутри getChildView от ParentAdapter Я просто вызываю ChildAdapter.

Но когда я расширяю 3-й уровень и прокручиваю его из вида, он восстанавливается обратно в сложенное состояние.

Как это исправить?

Я полагаю, мне нужно сохранить расширенное/свернутое состояние для моего getGroupView внутри ChildAdapter, но я не знаю, как правильно его реализовать.

Или я должен сохранить состояние для getChildView внутри ParentAdapter?

ответ

0

Хорошо, похоже, я это сделал.

Сначала добавьте дополнительный параметр isExpanded внутри вашего товара.

В ParentAdapter внутри getChildView добавить условие:

//expand child if was previously expanded 
    if (item.isExpanded) 
    { 
    expandableListView.expandGroup(childPosition); 
    } 

В ChildAdapter внутри getChildView добавить следующее:

if (item.isExpanded) 
    { 
    expandableListView.expandGroup(groupPosition); 
    notifyDataSetChanged(); 
    } else { 
    expandableListView.collapseGroup(groupPosition); 
    notifyDataSetChanged(); 
    } 

Это позволит сохранить расширенное/разрушилась состояние ваших деталей и изменить их правильно.

По крайней мере, эта реализация решила мою проблему, хотя лучшее решение могло бы существовать.

Смежные вопросы