我试图用ExpandableListView方法滚动到smoothScrollToPosition(int position)的底部,但是失败了,因为我不知道如何计算位置属性。
都不是
adapter.getGroupCount()nor
adapter.getChildrenCount(getGroupCount()-1);nor
public int getLastIndex() {
int count = 0;
for (int g = 0; g < getGroupCount(); g++)
count += getChildrenCount(g) + 1;
return count;
}成功了。
TLDR:我如何在API级别的ExpandableListView上滚动到8+的底部?
发布于 2012-02-07 13:59:58
expandableListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
parent.smoothScrollToPosition(groupPosition);
return true;
}
});发布于 2014-11-20 20:26:40
listView.post(new Runnable() {
@Override
public void run() {
listView.smoothScrollToPositionFromTop(listView.getCount()*2, 0, 5000);
}
});ExpandableListView.post()用于等待列表完成项目加载。获取项目(组和子组)的计数的ExpandableListView.getCount()
提供持续时间,这样列表就不会快速滚动(方法需要API 11) smoothScrollToPositionFromTop(int position, int offset, int duration)
发布于 2014-11-27 09:23:15
你的职位计算如下:
public int getLastIndex() {
int count = 0;
for (int g = 0; g < getGroupCount(); g++)
count += getChildrenCount(g) + 1;
return count;
}你可以用它滚动
expandableListView.smoothScrollToPosition(getLastIndex());但是,如果在活动类的smoothScrollToPosition()方法中调用onCreate()方法,则应该在界面显示后使用Handler调用smoothScrollToPosition()方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.....
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
expandableListView.smoothScrollToPosition(getLastIndex());
}
},1000);
}https://stackoverflow.com/questions/8603946
复制相似问题