java - 如何将 ListView 滚动到 Android 上的特定位置?

标签 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);
            }
        });

最佳答案

好吧,你需要以某种方式弄清楚这一点。这就是它的样子。我想你会需要一些不同的逻辑。

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

关于java - 如何将 ListView 滚动到 Android 上的特定位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19943594/

相关文章:

java - jruby-complete.jar 的 Gem 安装

java - 如何避免在服务类中重复 DAO 方法? @Transactional 注释 DAO 和服务类 - 这是可以接受的做法吗?

android - 如何解决Java Eclipse中的 “The hierarchy of the type is inconsistent”错误?

java - 在运行时更改android中ListView的背景颜色

android - 如何从ListView播放录音文件

java - Primefaces 复选框客户端值

java - 如何以正确的方式关闭 socket ?

android - 如何在后台服务中持续检查互联网范围?

Android RTL 文本方向

Android - 我怎么知道 gridview 何时到达底部?