在NumberPicker中执行setValue后,可以触发onValueChange吗?
valuePicker = (NumberPicker) findViewById(R.id.valorDimNumberPicker);
valuePicker.setMinValue(1);
valuePicker.setMaxValue(10);
valuePicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
//change the world
}
});
valuePicker.setValue(2);
在valuePicker.setValue(2)之后,我想自动执行onValueChange方法下的代码(改变世界)。
答案 0 :(得分:0)
这是一个例子!!!
valuePicker.setMinValue(1);
valuePicker.setMaxValue(10);
valuePicker.setWrapSelectorWheel(true);
valuePicker.setValue(2);
valuePicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
//change the world
if(newVal==3){
picker.setValue(3);
}
}
});
答案 1 :(得分:0)
假设您要为新值求值的函数是
void toastValue(int value) {
Toast.makeText(getApplicationContext(), String.valueOf(value), Toast.LENGTH_SHORT).show();
}
只是显示具有给定值的烤面包。
请注意,您的onValueChangeListener
现在将仅使用新值调用此函数,如下所示
valuePicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker numberPicker, int oldValue, int newValue) {
toastValue(newValue);
}
});
然后,您可以创建在setValue(x)
中调用代替的函数,该函数同时调用setValue(x)
和toastValue(x)
。
这可能是
void setPickerIndex(NumberPicker numberPicker, int value) {
numberPicker.setValue(value);
toastValue(value);
}
您可以像setPickerIndex(valuePicker, value);
这样使用。
请注意,使用Kotlin时,您可以创建扩展功能(以便它可以访问toastValue(x)
)
fun NumberPicker.setIndex(value: Int) {
this.value = value
toastValue(value)
}
您可以像valuePicker.setIndex(x)
这样称呼它,它比setPickerIndex(valuePicker, x)
更直观。
答案 2 :(得分:0)
在设置onclick()
的值后,在numberpicker
内重复相同的指令
在NumberPicker
onValueChange()
类似这样的东西:
final NumberPicker np = (NumberPicker)getActivity().findViewById(R.id.b_num_pick);
if (np != null) {
np.setMinValue(1);
int maxValue =nmax;
np.setMaxValue(maxValue);
np.setWrapSelectorWheel(false);
np.setValue(1);
np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
//do something;
}
});
}
Button increment_ = (Button) getActivity().findViewById(R.id.b_increment);
increment_ .setOnClickListener(new NumberPicker.OnClickListener() {
@Override
public void onClick(View v) {
int oldVal,newVal;
oldVal=np.getValue();
newVal=oldVal+1;
if(newVal>nmax)newVal=1;
np.setValue(newVal);
//do something;
}
});
对我来说有用。