首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >smoothScrollToPosition in ExpandableListView

smoothScrollToPosition in ExpandableListView
EN

Stack Overflow用户
提问于 2011-12-22 12:36:46
回答 4查看 5.7K关注 0票数 2

我试图用ExpandableListView方法滚动到smoothScrollToPosition(int position)的底部,但是失败了,因为我不知道如何计算位置属性。

都不是

代码语言:javascript
复制
adapter.getGroupCount()

nor

代码语言:javascript
复制
adapter.getChildrenCount(getGroupCount()-1);

nor

代码语言:javascript
复制
public int getLastIndex() {
    int count = 0;
    for (int g = 0; g < getGroupCount(); g++)
        count += getChildrenCount(g) + 1;
    return count;
}

成功了。

TLDR:我如何在API级别的ExpandableListView上滚动到8+的底部?

EN

回答 4

Stack Overflow用户

发布于 2012-02-07 13:59:58

代码语言:javascript
复制
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;
    }
});
票数 0
EN

Stack Overflow用户

发布于 2014-11-20 20:26:40

代码语言:javascript
复制
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)

票数 0
EN

Stack Overflow用户

发布于 2014-11-27 09:23:15

你的职位计算如下:

代码语言:javascript
复制
public int getLastIndex() {
    int count = 0;
    for (int g = 0; g < getGroupCount(); g++)
        count += getChildrenCount(g) + 1;
    return count;
}

你可以用它滚动

代码语言:javascript
复制
expandableListView.smoothScrollToPosition(getLastIndex());

但是,如果在活动类的smoothScrollToPosition()方法中调用onCreate()方法,则应该在界面显示后使用Handler调用smoothScrollToPosition()方法:

代码语言:javascript
复制
  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    .....
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            expandableListView.smoothScrollToPosition(getLastIndex());
        }
    },1000);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8603946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档