Розгорніть усіх дочірніх сторінок за допомогою списку, що розширюється


74

Я хотів би розширити всіх дітей, поки заповнюється подання списку, що розширюється. На даний момент мій код виглядає так:

ExpandableListView listView = (ExpandableListView) findViewById(R.id.view);
int count = viewAdapted.getGroupCount();
for (int position = 1; position <= count; position++)
    listView.expandGroup(position - 1);

що досить потворно. Чи є кращий спосіб це зробити?


Може бути , ви можете подивитися це: stackoverflow.com/questions/6849013/expandable-listview
david55

Очевидно, це єдине рішення зараз. Сподівався, що є якийсь атрибут або подібний.
Дрейч

Звичайно (позиція <= кол-во) ... скопіювати минулу помилку
Дрейч

@Drejc: чи можете ви вибрати правильну відповідь?
Джастін

Було ... але його було видалено
Дрейч

Відповіді:


76

Ви можете розширити його в getGroupView у своєму користувацькому адаптері:

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

Глюк!


12
це робить їх неможливими для клікання
Девід Лоусон

2
@DavidLawson: так, моє рішення виправлене - розширте їх. Якщо ви хочете розширити їх, і вони можуть натискатись, вам доведеться обробляти те, де створюється ExpandableListView, як рішення Дрейча.
Джастін,

37

Поміщення цього коду на ваш адаптер призведе до того, що список розширення залишиться відкритим, а функцію закриття вимкне.

ExpandableListView mExpandableListView = (ExpandableListView) parent;
mExpandableListView.expandGroup(groupPosition);

це може бути невеликою роботою, але працює як слід. Він відкриває всю групу (на початку) і може бути закритим у будь-який час

 for ( int i = 0; i < groupList.getCount(); i++ ) {
    groupList.expandGroup(i);
 } 

ПРИМІТКА. Помістіть цей код після налаштування адаптера на розгортається подання, інакше це може спричинити помилку. Сподіваюся, це допоможе.


6

спочатку заповніть адаптер, ніж вставте цей код у свій метод oncreate

   int count = adapter.getGroupCount();
                for ( int i = 0; i < count; i++ ) 
                    listView.expandGroup(i);

6

Розширення всіх груп

for(int i=0; i < myAdapter.getGroupCount(); i++)
    myExpandableListView.expandGroup(i);

якщо ви хочете зробити їх незламними.

myExpandableListView.setOnGroupClickListener(new OnGroupClickListener() {
  @Override
  public boolean onGroupClick(ExpandableListView parent, View v,int  groupPosition, long id) { 
    return true; 
  }
});

0

Я спробував перелічені відповіді, але виявив, що я можу використовувати метод getGroupCount (), щоб отримати кількість груп.

За допомогою цього методу я можу повторити та розширити кожну групу моїх ExpandableListView

for (int i = 0; i < myExpandableListView.getExpandableListAdapter().getGroupCount(); i++) {
      //Expand group
      myExpandableListView.expandGroup(i);
 }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.