gpt4 book ai didi

android - 当 NumberPicker 在 Android 中不滚动(按加号或减号按钮)时如何从 onValueChange 获取 NumberPicker 实例的值

转载 作者:行者123 更新时间:2023-11-30 01:31:42 32 4
gpt4 key购买 nike

我有一个 NumberPicker 实例,它按预期工作,但我需要在滚动停止时或当用户仅按下增量/减量按钮时从中获取值。我应该得到的值显示在 TextView 中。

当滚动停止/变得空闲并正确显示时,我设法获取了值(这在 onScrollChanged() 监听器中完成)。

但是当用户按下增量或减量按钮时,onScrollChanged() 监听器不会被触发,如果我使用 onValueChanged() 监听器,文本会更新但滚动变为非常滞后和缓慢(由于值更改时一直更新)。

所以我需要帮助如何始终显示 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
}
});

抱歉格式不正确我是新手,但任何人都可以帮助我解决这个问题。

最佳答案

你好

import android.os.Handler;

......................

milisecoundsNumberPicker.setOnValueChangedListener(new android.widget.NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(android.widget.NumberPicker picker, final int oldVal, final int newVal) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
if (newVal == milisecoundsNumberPicker.getValue()) {
textNumber.setText(newVal + "");
}
}
}, 500);//set time
}
});

关于android - 当 NumberPicker 在 Android 中不滚动(按加号或减号按钮)时如何从 onValueChange 获取 NumberPicker 实例的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35675682/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com