如何将列表视图滚动到Android上的特定位置?

时间:2013-11-13 01:36:31

标签: java android android-listview

我的列表包含公交车时刻表。 我想使用SmoothScroll根据当地时间滚动列表直到下一个计划。 有时列表有40个项目,我不知道下一个时间表的位置。 如何知道这个项目的位置并使用SmoothScroll?

如果您需要,我可以提供更多详细信息。

编辑2:

我试过这个:

自定义适配器覆盖此方法:

public int nextTimePosition;

@Override
public int getItemViewType(int position) {

    String item = getItem(position);

    return (item.equalsIgnoreCase(nextTime)) ? CHANGE_BACKGROUND : TYPE_ITEM_NORMAL;
}

如果item等于nextTime,我保存位置以获取listView类并设置smoothscroll,但没有成功

编辑3:

我在SimonSays的帮助下解决了这个问题。

在list.post()之前,我进行查询以将下一个计划带入变量并使用下面的代码滚动

方法smoothScrollToPosition在找到下一个计划时停止。 但是我希望时间表在列表中居中,所以我做了一些调整。

关注以备参考:

lvUtil.post(new Runnable() {

            @Override
            public void run() {
                int visibleChildCount = (lvUtil.getLastVisiblePosition() - lvUtil.getFirstVisiblePosition()) + 1;
                int finalIndex = uteis.indexOf(getNext()) + (int) Math.floor((visibleChildCount / 2));
                lvUtil.smoothScrollToPosition(finalIndex);
            }
        });

1 个答案:

答案 0 :(得分:1)

嗯,你需要以某种方式解决这个问题。这就是它的外观。我想你会需要一些不同的逻辑。

List<Item> myListData = ...;
for(Item item : myListData){
    if(isNextItem(Item){
        listView.smoothScrollToPosition(myListData.indexOf(item));
        break;
    }
}