我有一个NumberPicker实例,它可以按预期工作,但是当滚动停止时或者当用户仅按下增量/减量按钮时,我需要从中获取值。 我应该得到的值显示在文本视图中。
当滚动停止/变得空闲并正确显示时,我设法获得了该值(在onScrollChanged()侦听器中完成)。
但onScrollChanged()时,在增量或减量按钮的用户请,如果我使用监听器不会被解雇onValueChanged()监听文字更新,但滚动变得非常laggy和慢(如在更新时的值更改的所有时间的结果)。
因此,我需要帮助,如何始终显示NumberPicker的值,而不会导致NumberPicker滚动的滞后或减慢。
代码如下:
NumberPicker milisecoundsNumberPicker = (NumberPicker) findViewById(R.id.numberPicker);
milisecNumberPicker.setFocusable(false);
milisecNumberPicker.setFocusableInTouchMode(false);
TextView textNumber = (TextView) findViewById(R.id.selectednum);
milisecNumberPicker.setMaxValue(10);
milisecNumberPicker.setMinValue(0);
milisecNumberPicker.setWrapSelectorWheel(false);
String[] nums = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
milisecNumberPicker.setDisplayedValues(nums);// array of numbers
milisecNumberPicker.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChange(NumberPicker view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
|| scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
view.getValue();
textNumber.setText(view.getValue() + "");
//this is ok no lagging but will not work on pressing increments and decrements buttons
}
}
});
// If I use this
milisecNumberPicker.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
// set Text value here causing lagging on scrolling
}
});
抱歉,格式化不好,我是新手,但是在这个主题上任何人都可以帮助我。