2012-07-24 50 views
3

我在写一个时间选择器小部件,它包含几个ListView(天,小时,分钟等)。分钟ListView具有Integer.MAX_VALUE元素(反复重复0-59)。 每当用户打开列表,我希望它停止在0,15,30或45我尝试使用setSelection,但即使它选择适当的元素它不会取消投掷速度,所以列表不断抛出。如何在特定列表项目中投掷ListView时停止ListView?

如果您有任何想法,请帮助我。

回答

1

感谢您的帮助!我试过了,即使它停止了列表视图,但每次停顿的位置都稍有不同,所以最后我使用了另一种解决方案。

if((firstVisibleItem % 60 == 13 || firstVisibleItem % 60 == 28 || firstVisibleItem % 60 == 43 || firstVisibleItem % 60 == 58) && !stopped) 
{ 
    MotionEvent me = MotionEvent.obtain(10, SystemClock.uptimeMillis(),  MotionEvent.ACTION_DOWN, 0, 0, 0); 
    MotionEvent me2 = MotionEvent.obtain(10, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 0, 0, 0); 
    mMinutesListView.dispatchTouchEvent(me); 
    mMinutesListView.dispatchTouchEvent(me2); 
    mMinutesListView.setSelection(firstVisibleItem); 
    stopped = true; 
} 

然后在在SCROLL_STATE_FLING的情况下,onScrollStateChanged方法我设置了“停止”布尔变量设置为false。

相关问题