我的列表包含公交车时刻表。 我想使用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);
}
});
答案 0 :(得分:1)
嗯,你需要以某种方式解决这个问题。这就是它的外观。我想你会需要一些不同的逻辑。
List<Item> myListData = ...;
for(Item item : myListData){
if(isNextItem(Item){
listView.smoothScrollToPosition(myListData.indexOf(item));
break;
}
}