Развернуть все дочерние элементы в расширяемом списке - PullRequest
72 голосов
/ 29 июля 2011

Я хотел бы расширить все дочерние элементы, пока расширяемый вид списка заполнен. В настоящее время мой код выглядит так:

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

что довольно уродливо. Есть ли лучший способ сделать это?

Ответы [ 5 ]

69 голосов
/ 11 ноября 2013

Вы можете расширить его в 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;
}

Глюк!

34 голосов
/ 09 февраля 2015

размещение этого кода на вашем адаптере сделает список раскрытия открытым и отключит функцию закрытия.

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

это может немного обойти, но работает так, как должно быть.Он открывает всю группу (при запуске) и может быть закрыт в любое время

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

ПРИМЕЧАНИЕ. Поместите этот код после установки адаптера в расширяемом окне, иначе это может вызвать ошибку.Надеюсь, поможет.

5 голосов
/ 23 января 2016

сначала заполните адаптер, затем вставьте этот код в свой метод создания

   int count = adapter.getGroupCount();
                for ( int i = 0; i < count; i++ ) 
                    listView.expandGroup(i);
4 голосов
/ 04 сентября 2017

Расширение всех групп

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 голосов
/ 02 июня 2018

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

Используя этот метод, ямогу итерировать и расширять каждую группу моих ExpandableListView

for (int i = 0; i < myExpandableListView.getExpandableListAdapter().getGroupCount(); i++) {
      //Expand group
      myExpandableListView.expandGroup(i);
 }
...