我的列表包含公交车时刻表。 我想使用 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/