2013-05-10 124 views
0

我看過SimpleExpandableListAdapter例如,當我點擊移動屏幕頂部的擴展組項時。我創建了NewAdapter,它擴展了 BaseExpandableListAdapter。我想做同樣的事情,但不知道該怎麼做。我搜索了很多不適合我的東西。請讓我知道該怎麼做。 先謝謝您。在expandablelistview的屏幕頂部移動/滾動點擊listitem視圖

+0

你能澄清這個問題嗎? – 2013-05-10 14:46:42

+0

我想在可擴展列表視圖中移動屏幕頂部的點擊過的listitem – 2013-05-10 18:00:04

回答

1

是你所尋找的,

public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) 
{ 
    myListview.setSelectionFromTop(position, 5); 
} 

這將使你的選擇的列表項爲屏幕上的第一個可見項。但是,如果沒有任何流暢的滾動動畫,只要點擊該項目,它就成爲第一個可見的項目。

如果你想滾動動畫,你可以使用,

public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) 
{ 
    int offset = position - myListview.getFirstVisiblePosition(); 
    if(myListview.getFirstVisiblePosition() > 0) 
     offset -= 1; 

    myListview.smoothScrollByOffset(offset); 
} 

注意smoothScrollByOffset可從API級別11起。

但是,如果您選擇靠近列表底部的項目,則這兩種方法都不起作用,因爲如果最後一個列表項目可見,則列表不會再向上滾動。爲了克服這個問題,你可以將你的列表視圖轉換爲circular listview,如下所述。

1

我認爲使用持續時間會帶來更好的用戶體驗。所以你可以使用這個,並增加持續時間。將項目順利滾動到列表視圖的頂部。

int duration = 500; //miliseconds 
int offset = 0;  //fromListTop 

listview.smoothScrollToPositionFromTop(position,offset,duration); 
  • descrease時間,使滾動更快
1

這一個是爲我工作

expandList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { 
     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 

      if (!parent.isGroupExpanded(groupPosition)) { 
       parent.expandGroup(groupPosition); 
      } else { 
       parent.collapseGroup(groupPosition); 
      } 
      parent.setSelectedGroup(groupPosition); 

      return true; 
     } 
    }); 

至於滾動的主要工作部件是

parent.setSelectedGroup(groupPosition); 

可能這個堅持你的問題。