在我的程序中,我想使用两组轮子,如下所示:
hours = (WheelView) findViewById(R.id.hour);
NumericWheelAdapter hourAdapter = new NumericWheelAdapter(this, 0, 23, "%02d");
hourAdapter.setItemResource(R.layout.wheel_text_item);
hourAdapter.setItemTextResource(R.id.text);
hours.setViewAdapter(hourAdapter);
hours.setCyclic(true);
这些轮子有一个scrollinglistener hours.addScrollingListener(scrolledListener);
scrollinglistener看起来像这样:
// Wheel scrolled listener
OnWheelScrollListener scrolledListener = new OnWheelScrollListener() {
public void onScrollingStarted(WheelView wheel) {
}
public void onScrollingFinished(WheelView wheel) {
update();
}
};
我想设置一个轮子与另一个轮子的值,但是当我实例化两个听众并滚动第一个时,它继续设置轮子一个然后轮子二轮然后再轮一个。
是否可以禁用两个scrolledListener中的一个?
我试过这个:
hours.addScrollingListener(null);
hours.setEnabled(false);
但是这出错了,程序必须停止。
感谢您的帮助!
PS:轮子来自 * Android车轮控制。 * https://code.google.com/p/android-wheel/答案 0 :(得分:0)
从它的声音中你将OnWheelScrollListener添加到同一个WheelView侦听器列表中,该列表回调它包含的每个侦听器,这将解释您的行为。应该以类似的方式添加听众...
hours = (WheelView) findViewById(R.id.hour);
hours.addScrollingListener(new OnWheelScrollListener() {
public void onScrollingStarted(WheelView wheel) {
}
public void onScrollingFinished(WheelView wheel) {
update();
}
});
hours2 = (WheelView) findViewById(R.id.hour2);
hours2.addScrollingListener(new OnWheelScrollListener() {
public void onScrollingStarted(WheelView wheel) {
}
public void onScrollingFinished(WheelView wheel) {
update();
}
});
此外,您希望使用removeScrollingListener(OnWheelScrollListener)方法删除侦听器... hours.addScrollingListener(null);
只是在列表中添加一个空项,这会导致您认为是NullPointerException。
修改强>
OnWheelScrollListener listener = new OnWheelScrollListener() {
public void onScrollingStarted(WheelView wheel) {
}
public void onScrollingFinished(WheelView wheel) {
if (wheel.getId() == R.id.hour) {
//do wheel 1 logic
} else if (wheel.getId() == R.id.hour2) {
//do wheel 2 logic
}
};
hours.addScrollingListener(listener);
hours2.addScrollingListener(listener);
答案 1 :(得分:0)
我联系了我正在使用的车轮设计师Yuri,他给了我以下解决方案:
// Wheel scrolled listener
OnWheelScrollListener scrolledListener = new OnWheelScrollListener() {
boolean syncInProgress = false;
public void onScrollingStarted(WheelView wheel) {
}
public void onScrollingFinished(WheelView wheel) {
if (syncInProgress) {
syncInProgress = false;
return;
}
syncInProgress = true;
if (wheel.getId() == R.id.wheel1) {
// do something
} else if (wheel.getId() == R.id.wheel2) {
// do something else
}
}
};
谢谢大家的帮助!