Как сохранить ExpandableListView в расширенном состоянии?

я использую

SimpleExpandableListAdapter

в моем

ExpandableListActivity

Когда пользователь нажимает на строку группы, список детей разворачивается и отображается, когда пользователь нажимает на каждый дочерний элемент в расширенном списке, пользователь будет переходить к следующему second_Activity. В настоящее время, когда пользователь нажимает кнопку «Назад» для возврата из second_Activity в ExpandableListActivity, расширяемый список инициализируется как нерасширенный, я бы хотел, чтобы расширяемый список сохранялся в расширенном состоянии, чтобы пользователь знал ранее, какой элемент он выбрал. Как это сделать? Какой метод из ExpandableListActivity следует переопределить?

PS: Я знаю, что должен поместить getExpandableListView().expandGroup(groupPosition); Где-то, но где? Я попытался поместить этот код в onGroupClick() и onChildClick() , но это не помогает.

Solutions Collecting From Web of "Как сохранить ExpandableListView в расширенном состоянии?"

Для всегда расширенных групп я расширяю SimpleExpandableListAdapter и устанавливаю группу для расширения в методе getGroupView:

 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View v = super.getGroupView(groupPosition, isExpanded, convertView, parent); ExpandableListView eLV = (ExpandableListView) parent; eLV.expandGroup(groupPosition); return v; } 

Я просматривал, пытаясь найти решение собственной проблемы ExpandableListView. Во всяком случае, добавьте мои 2 цента к ответу, предоставленному adstro.

Концепция проста: сначала вызовите getGroupCount() адаптера ExpandableList, чтобы найти количество групп. Затем expandGroup(int GroupPos) группы и вызовите expandGroup(int GroupPos) в ExpandableList View, чтобы развернуть каждую группу.

Вышеуказанные коды должны быть помещены внутри onCreate (), а также onResume (), чтобы обслуживать как первое создание, так и возврат к активности впоследствии после создания.

Я сделал что-то подобное, за исключением того, что все группы постоянно расширялись. Для этого я получил ручку listView через ExpandableListActivity.getExpandableListView () и использовал ExpandableListView.expandGroup (int groupPos) для расширения групп.

Для вашего сценария вы можете отслеживать, какая группа (-ы) расширена и после того, как активность снова загрузится, повторно разверните их.

Надеюсь это поможет.

Еще одна вещь … Я поместил этот код в OnCreate ().

  @Override View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View v = super.getGroupView(groupPosition, isExpanded, convertView, parent); ExpandableListView eLV = (ExpandableListView) parent; eLV.expandGroup(groupPosition); return v; } 

после этого

  expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast.makeText(getApplicationContext(),listDataHeader.get(groupPosition) + " : " + listDataChild.get(listDataHeader.get(groupPosition)).get(childPosition),Toast.LENGTH_SHORT).show(); return false; } }); 

В onResume

Работал для меня. Нет проблем с прокруткой.

Решение, предоставляемое straya, не подходит для Android 2.3.3. Ваш ExpandableListView потеряет фокус, и события click перестанут работать после прокрутки списка.

Я сделал так:

 ExpandableAdpater adapter=new ExpandableAdapter(context); expandableListView.setAdapter(adapter); for (int i = 0; i < listResponse.size(); i++) { expandableListView.expandGroup(i); }