ListView上下自动滑动,自动校准滑动位,并且更新相应的Item。
首先使得ListView自动滑动的某个固定的item,需要的方法是:
smoothScrollToPositionFromTop (int position, int offset, int duration)
该方法的意思是将 position 定位的item平滑的滑动到距离顶部有offset像素的位置,所用时间时duration毫秒。
当然了还有其他方法:
smoothScrollToPosition (int position)
smoothScrollToPosition (int position, int boundPosition)
smoothScrollToPositionFromTop (int position, int offset)
其次抓取其中的特定Item,并且做更新。如果使用getView,能否确定返回的view就是当前的view?这个要看adapter怎么实现了。
我使用的是getChildAt(int index),但是使用这个方法是有时会出现返回空。原因是因为index值已经不在listVIew的整体显示区域内。还有一个原因就是ListView在滚动的时候,也会返回一个空。此外使用该方法还是要测试校准一下,如果ListView有headView的话,getChildAt(0)并不是第一个Item
因此需要更新Item的时候,必须在ListView停止滚动的时候。那么还需要给ListView添加滚动监听
class LvScrollEvent implements OnScrollListener {
@Override
//正在滚动的时候
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) { }
@Override
//滚动状态的改变
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE: //滚动停止
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL://正在滚动
break;
case OnScrollListener.SCROLL_STATE_FLING://滚动结束
break;
}
}
}