在expandablelistview的屏幕顶部移动/滚动点击listitem视图
问题描述:
我看过SimpleExpandableListAdapter
例如,当我点击移动屏幕顶部的扩展组项时。我创建了NewAdapter
,它扩展了 BaseExpandableListAdapter
。我想做同样的事情,但不知道该怎么做。我搜索了很多不适合我的东西。请让我知道该怎么做。 先谢谢您。在expandablelistview的屏幕顶部移动/滚动点击listitem视图
答
是你所寻找的,
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,如下所述。
答
我认为使用持续时间会带来更好的用户体验。所以你可以使用这个,并增加持续时间。将项目顺利滚动到列表视图的顶部。
int duration = 500; //miliseconds
int offset = 0; //fromListTop
listview.smoothScrollToPositionFromTop(position,offset,duration);
- descrease时间,使滚动更快
答
这一个是为我工作
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);
可能这个坚持你的问题。
你能澄清这个问题吗? – 2013-05-10 14:46:42
我想在可扩展列表视图中移动屏幕顶部的点击过的listitem – 2013-05-10 18:00:04