4

プロジェクトで展開されたリストビューを使用している場合、一度に1つだけリストビューを展開する必要があります。つまり、アイテムを展開し、リスト内の別のアイテムを展開しようとすると、展開した前のアイテムが折りたたまれ、クリックされた新しいアイテムが展開するために、回答は大歓迎です、私はクリックリスナーのために以下のスニペットで試しています。

 convertViewpar.setOnClickListener(new OnClickListener() {

    int i=1;
    public void onClick(View v) {
    i = i++;
    int[] expds = new int[100];
    expds[0]=0;
    expds[i] = groupPosition;
    if(expds[i]==expds[i-1]){
    if(isExpanded)
    expandlist.collapseGroup(i);
    else
    expandlist.expandGroup(i);
    }else{
    expandlist.collapseGroup(i-1);
     if(isExpanded)
        expandlist.collapseGroup(i);
    else
    expandlist.expandGroup(i);

    }


}
}); 
4

2 に答える 2

25

クラス レベルおよび onCreate メソッドで実装 OnGroupExpandListenerを追加します。

    listView.setOnGroupExpandListener(this);

このメソッドを追加します

/*
 * (non-Javadoc)
 * 
 * @see
 * android.widget.ExpandableListView.OnGroupExpandListener#onGroupExpand
 * (int)
 */
public void onGroupExpand(int groupPosition) {
    int len = expListAdapter.getGroupCount();

    for (int i = 0; i < len; i++) {
        if (i != groupPosition) {
            listView.collapseGroup(i);
        }
    }
}

それは間違いなく動作します。

于 2012-06-21T05:29:53.370 に答える
3

この解決策を試してください。GroupClcik リスナーを使用して、現在クリックされている位置を確認し、他のすべてのグループをまとめます。

 expList.setOnGroupClickListener(new OnGroupClickListener() {

        public boolean onGroupClick(ExpandableListView arg0, View arg1, int arg2,
                long arg3) {
            int count =  yourAdapter.getGroupCount();
            for (int i = 0; i <count ; i++)
              if(arg2!=i)
                exp.collapseGroup(i);
              else
                  exp.expandGroup(i);
            return false;
        }
    });

または、このソリューションに従って、 ExpandableListView のグループをプログラムで折りたたむ

@Override
public void onGroupExpanded(int groupPosition){
    //collapse the old expanded group, if not the same
    //as new group to expand
    if(groupPosition != lastExpandedGroupPosition){
        accordion.collapseGroup(lastExpandedGroupPosition);
    }

    super.onGroupExpanded(groupPosition);           
    lastExpandedGroupPosition = groupPosition;
}
于 2012-06-21T05:29:08.287 に答える