[英]Collapse all group except selected group in expandable listview android
我正在使用可擴展列表視圖開發android應用程序。 其實我需要的是,我正在列出包含孩子的群組。
如果我選擇一個不可擴展的組,它應該展開,在我選擇第二組后,第一組應該折疊。 我做谷歌,但我找不到我想要的東西。 請幫幫我。
將當前擴展的組位置存儲在變量中。 在onGroupExpanded中執行以下操作。
private int lastExpandedPosition = -1;
private ExpandableListView lv; //your expandable listview
...
lv.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
if (lastExpandedPosition != -1
&& groupPosition != lastExpandedPosition) {
lv.collapseGroup(lastExpandedPosition);
}
lastExpandedPosition = groupPosition;
}
});
使用此代碼即可
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousItem = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousItem )
expandableList.collapseGroup(previousItem );
previousItem = groupPosition;
}
});
@Override
public void onGroupExpanded(int groupPosition){
//collapse the old expanded group, if not the same
//as new group to expand
if(groupPosition != lastExpandedGroupPosition){
listView.collapseGroup(lastExpandedGroupPosition);
}
super.onGroupExpanded(groupPosition);
lastExpandedGroupPosition = groupPosition;
}
如果ExpandableListView有兩個以上的組:
expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
for (int g = 0; g < expandableListAdapter.getGroupCount(); g++) {
if (g != groupPosition) {
expandableListView.collapseGroup(g);
}
}
}
});
除了點擊的組之外,它將折疊所有組。
獲取ExpendableListView
,然后重寫以下方法 - setOnGroupExpandListener
expandableListView = (ExpandableListView) findViewById(R.id.exp_listview);
expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
int previousItem = -1;
@Override
public void onGroupExpand(int groupPosition) {
if (groupPosition != previousItem)
expandableListView.collapseGroup(previousItem);
previousItem = groupPosition;
}
});
嘗試將它放在ExpandableListAdapter中,listView是對ExpandableListView本身的引用。 lastExpandedGroupPosition是在ExpandableListAdapter中定義的整數成員變量。
@Override
public void onGroupExpanded(int groupPosition)
{
//collapse the old expanded group, if not the same
//as new group to expand
if(groupPosition != lastExpandedGroupPosition)
{
listView.collapseGroup(lastExpandedGroupPosition);
}
super.onGroupExpanded(groupPosition);
lastExpandedGroupPosition = groupPosition;
}
elstListView1.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
for(int i=0;i<listDataHeader.size();i++){
if(i==groupPosition){
//do nothing}
else{
elstListView1.collapseGroup(i);
}
}
}
});
我也遇到了同樣的問題。 但我可以通過以下代碼解決我的問題:
因為我在可擴展列表中有4個Headers,基於我這樣寫的
expListView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPos) {
// TODO Auto-generated method stub
expListView.collapseGroup(groupPos+1);
expListView.collapseGroup(groupPos-1);
expListView.collapseGroup(groupPos-2);
expListView.collapseGroup(groupPos+2);
expListView.collapseGroup(groupPos+3);
expListView.collapseGroup(groupPos-3);
}
});`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.