当我在移动屏幕顶部点击展开的群组项时,我看到SimpleExpandableListAdapter
示例。我创建了NewAdapter
,扩展了
BaseExpandableListAdapter
。我想做同样的事情,但不知道该怎么做。我搜索了许多对我不起作用的东西。请让我知道怎么做。
先谢谢你。
答案 0 :(得分:2)
这个适合我
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);
这可以解决你的问题。
答案 1 :(得分: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,如此处所述。
答案 2 :(得分:1)
我认为使用持续时间可以提供更好的用户体验。所以你可以使用它,并添加持续时间。将项目平滑地滚动到列表视图的顶部。
int duration = 500; //miliseconds
int offset = 0; //fromListTop
listview.smoothScrollToPositionFromTop(position,offset,duration);