SimpleExpandableListAdapter
当我在屏幕顶部单击展开的组项目时,我看到了示例。我创建NewAdapter
了扩展
BaseExpandableListAdapter
。我想做同样的事情,但不知道该怎么做。我搜索了很多不适合我的东西。请让我知道该怎么做。先感谢您。
问问题
4909 次
3 回答
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);
这可以解决你的问题。
于 2015-09-23T06:26:43.800 回答
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 开始可用。
但是,如果您选择靠近列表底部的项目,这两种方法都将不起作用,因为如果最后一个列表项目可见,则列表将不会进一步向上滚动。为了克服这个问题,您可以将您的 listview 转换为循环 listview,如此处所述。
于 2013-08-12T19:45:54.040 回答
1
我认为使用持续时间可以提供更好的用户体验。因此,您可以使用它,并添加持续时间。将项目顺利滚动到列表视图的顶部。
int duration = 500; //miliseconds
int offset = 0; //fromListTop
listview.smoothScrollToPositionFromTop(position,offset,duration);
- 减少持续时间以加快滚动速度
于 2015-07-03T01:44:45.940 回答