Как сохранить ExpandableListView в расширенном состоянии?
Я использую
SimpleExpandableListAdapter
в моем
ExpandableListActivity
Когда пользователь нажимает на строку группы, список детей расширяется и показывается, когда пользователь нажимает на каждый дочерний элемент в расширенном списке, пользователь будет перемещаться к следующей секунде. В настоящее время, когда пользователь нажимает кнопку "Назад" для возврата из second_Activity в ExpandableListActivity, расширяемый список инициализируется как нерасширенный, я бы хотел, чтобы расширяемый список сохранялся в расширенном состоянии, чтобы пользователь знал ранее, какой элемент он выбрал. Как это сделать? Какой метод из ExpandableListActivity следует переопределить?
PS: Я знаю, что я должен положить getExpandableListView().expandGroup(groupPosition);
где-нибудь, но где? Я попытался поместить этот код в onGroupClick()
и onChildClick()
, но это не помогает.
Ответы
Ответ 1
Для всегда расширенных групп я расширяю 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;
}
Ответ 2
Я просматривал, пытаясь найти решение своей проблемы ExpandableListView. Во всяком случае, добавьте мои 2 цента в ответ, предоставленный adstro.
Концепция проста:
Сначала вызовите функцию getGroupCount()
ExpandableList Adapter, чтобы найти количество групп
Затем прокрутите группы и вызовите функцию expandGroup(int GroupPos)
ExpandableList Вид, чтобы развернуть каждую группу.
Вышеуказанные коды должны быть помещены внутри onCreate(), а также onResume(), чтобы обслуживать как первое создание, так и возврат к активности после создания.
Ответ 3
Я сделал что-то подобное, за исключением того, что все группы постоянно расширялись. Для этого я получил ручку listView через ExpandableListActivity.getExpandableListView() и использовал ExpandableListView.expandGroup(int groupPos), чтобы развернуть группы.
Для вашего сценария вы можете отслеживать, какая группа (-ы) расширена и после того, как активность будет загружена снова, повторно разверните их.
Надеюсь, что это поможет.
Еще одна вещь... Я помещаю этот код в OnCreate().
Ответ 4
@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
...
Работал для меня. Нет проблем с прокруткой.
Ответ 5
Решение, предоставляемое straya, не подходит для Android 2.3.3. Ваш ExpandableListView потеряет фокус, а события щелчка перестанут работать после прокрутки списка.
Ответ 6
Я сделал так:
ExpandableAdpater adapter=new ExpandableAdapter(context);
expandableListView.setAdapter(adapter);
for (int i = 0; i < listResponse.size(); i++) {
expandableListView.expandGroup(i);
}