web-dev-qa-db-ja.com

展開可能なリストビューですべての子を展開します

展開可能なリストビューが表示されている間に、すべての子を展開したいと思います。現在、私のコードは次のようになっています。

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

かなりいです。これを行うより良い方法はありますか?

72
Drejc

カスタムアダプタの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;
}

グラック!

70
Justin

このコードをアダプターに配置すると、展開リストが開いたままになり、そのクローズ機能が無効になります。

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

これは少しの回避策かもしれませんが、本来あるべき方法で機能します。 (開始時に)すべてのグループを開き、いつでも閉じることができます

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

注:拡張可能ビューでアダプターを設定した後にこのコードを配置すると、エラーが発生する可能性があります。それが役に立てば幸い。

34
ralphgabb

最初にアダプタを埋めてから、このコードをoncreateメソッドに入れます

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

すべてのグループを展開する

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; 
  }
});
4

リストされた応答を試しましたが、グループ数を取得するために getGroupCount() メソッドを使用できることがわかりました。

このメソッドを使用すると、ExpandableListViewのすべてのグループを繰り返して展開できます

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