Java 如何在Android上将列表视图滚动到特定位置?
我的名单上有公共汽车时刻表。 我想使用SmoothScroll根据当地时间滚动列表直到下一个日程表。 有时清单上有40个项目,我不知道下一个日程安排在什么位置。 如何知道此项目的位置并使用SmoothScroll 如果你需要,我可以提供更多细节 编辑2: 我试过这个: 覆盖此方法的自定义适配器:Java 如何在Android上将列表视图滚动到特定位置?,java,android,android-listview,Java,Android,Android Listview,我的名单上有公共汽车时刻表。 我想使用SmoothScroll根据当地时间滚动列表直到下一个日程表。 有时清单上有40个项目,我不知道下一个日程安排在什么位置。 如何知道此项目的位置并使用SmoothScroll 如果你需要,我可以提供更多细节 编辑2: 我试过这个: 覆盖此方法的自定义适配器: public int nextTimePosition; @Override public int getItemViewType(int position) { String item =
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()之前,我进行了一个查询,将下一个计划放入一个变量中,并使用下面的代码滚动
当他找到下一个时间表时,这个方法停止了。
但是我想把时间表放在列表的中心,所以我做了一些调整
以下内容供日后参考:
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;
}
}
List myListData=。。。;
用于(项目:myListData){
if(isNextItem(项目){
smoothScrollToPosition(myListData.indexOf(item));
打破
}
}
我的意思是,就像你尝试过什么一样?我已经可以计算出下一个日程安排。但是通过适配器,我只有在项目在屏幕上可见时才有位置,并且它不能解决问题。我如何从适配器的列表中获取项目?如何将它们放入?请参见编辑3,你的答案帮助我它不起作用!我在getView()中使用>自定义适配器