2012-05-30 74 views
0

我們有一個ExpandableListView,其中包含大量的父項和子項。將頂級ExpandableListView置於列表頂部

當打開一個「父」時,我們會自動關閉先前打開的組,以便在任何一個頂部只打開一個組。 但是,我們希望該組出現在可見數據的當前頂部。 換句話說,「父母」應該是孩子追隨的清單中第一個可見的人。

實際發生的是它正確地打開它,但它是隨機定位的。在大多數情況下,頂部可見線實際上是其中一個子項,我們必須回滾到父項。

有什麼方法可以強制顯示視圖頂部的內容。

+0

不是很清楚...你想在擴展列表頂部開放的父母,或你想組一行是打開時在屏幕頂部打開(它們*不是*相同的東西)。 – Barak

+0

我希望組行(組的「標題」)在打開時位於屏幕的頂部。目前它在屏幕的「上方」。 – theblitz

回答

5

所以,經過多次努力,我們成功地找到一個解決方案:

categoryListView.setOnGroupClickListener(new OnGroupClickListener() { 

     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, 
       int groupPosition, long id) { 

      categoryListView.setSelectionFromTop(groupPosition, 0); 
      Boolean shouldExpand = (!categoryListView.isGroupExpanded(groupPosition)); 
      categoryListView.collapseGroup(lastClickedPosition); 
      if (shouldExpand){ 
       categoryListView.expandGroup(groupPosition); 
      }     
      lastClickedPosition = groupPosition; 

      return true; 
     } 
    });