我在写一个时间选择器小部件,它包含几个ListView(天,小时,分钟等)。分钟ListView具有Integer.MAX_VALUE元素(反复重复0-59)。 每当用户打开列表,我希望它停止在0,15,30或45我尝试使用setSelection,但即使它选择适当的元素它不会取消投掷速度,所以列表不断抛出。如何在特定列表项目中投掷ListView时停止ListView?
如果您有任何想法,请帮助我。
我在写一个时间选择器小部件,它包含几个ListView(天,小时,分钟等)。分钟ListView具有Integer.MAX_VALUE元素(反复重复0-59)。 每当用户打开列表,我希望它停止在0,15,30或45我尝试使用setSelection,但即使它选择适当的元素它不会取消投掷速度,所以列表不断抛出。如何在特定列表项目中投掷ListView时停止ListView?
如果您有任何想法,请帮助我。
感谢您的帮助!我试过了,即使它停止了列表视图,但每次停顿的位置都稍有不同,所以最后我使用了另一种解决方案。
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。
ListView: public void smoothScrollToPosition (int position)
也许这会帮助你。从来没有使用它,但它看起来可能是一个解决方案。