2017-03-16 97 views
-1

當在可擴展列表視圖上單擊另一項時,如何關閉上一個打開的項目?ExpandableListview - 如何關閉上一個打開的項目,何時點擊另一個項目?

我參考了本教程http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/
但是,當我點擊新項目,prevoius項目將不會關閉。

+1

親愛的!在追求時更加細緻。 –

+1

參考http://stackoverflow.com/questions/7862396/show-only-one-child-of-expandable-list-at-a-time – sasikumar

回答

1

因此,您一次只需要一個(或零個)擴展組。對?當您展開另一個代碼時,以下代碼將關閉先前展開的組。嘗試一下。

在這裏你去

final int[] prevExpandPosition = {-1}; 
    expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 
     @Override 
     public void onGroupExpand(int groupPosition) { 
      if (prevExpandPosition[0] >= 0 && prevExpandPosition[0] != groupPosition) { 
       expandableListView.collapseGroup(prevExpandPosition[0]); 
      } 
      prevExpandPosition[0] = groupPosition; 
     } 
    }); 
+0

Good.Its爲我工作。 – CS9423

+0

很高興工作。您可以隨時通過點擊勾號來接受答案。快樂編碼:) – Nizam

+0

有一個錯誤,如果要兩次點擊相同的位置。 –

1

您可以實現ExpandableListView.OnGroupClickListener,在那裏你必須調用collapseGroup()所有列表組除了被點擊這樣的一個:

expandableList.setOnGroupExpandListener(new OnGroupExpandListener() { 
    int previousGroup = -1; 

    @Override 
    public void onGroupExpand(int groupPosition) { 
     if(groupPosition != previousGroup) 
      expandableList.collapseGroup(previousGroup); 
     previousGroup = groupPosition; 
    } 
}); 
0
 expandableList.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 
     int previousGroup = -1; 

     @Override 
     public void onGroupExpand(int groupPosition) { 
      if(groupPosition != previousGroup) 
       expandableList.collapseGroup(previousGroup); 
      previousGroup = groupPosition; 
     } 
    }); 
相關問題