0

我的清单包含公共汽车的时刻表。我想使用 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;
}

如果项目等于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);
            }
        });
4

1 回答 1

1

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

List<Item> myListData = ...;
for(Item item : myListData){
    if(isNextItem(Item){
        listView.smoothScrollToPosition(myListData.indexOf(item));
        break;
    }
}
于 2013-11-13T01:57:57.107 回答