Подтвердить что ты не робот

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

Я использую

SimpleExpandableListAdapter

в моем

ExpandableListActivity

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

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

4b9b3361

Ответ 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);
                            }