Чтобы это работало, вам нужен поток, который будет обновлять целочисленное значение при длительном нажатии на кнопку.
Создайте обработчик в вашей активности:
private Handler repeatUpdateHandler = new Handler();
И 2Вары, которые будут утверждать: это увеличение или уменьшение?Только один набор за раз.
private boolean mAutoIncrement = false;
private boolean mAutoDecrement = false;
И текущее числовое значение
public int mValue;
И класс, который будет работать в другом потоке:
class RptUpdater implements Runnable {
public void run() {
if( mAutoIncrement ){
increment();
repeatUpdateHandler.postDelayed( new RptUpdater(), REP_DELAY );
} else if( mAutoDecrement ){
decrement();
repeatUpdateHandler.postDelayed( new RptUpdater(), REP_DELAY );
}
}
}
Добавитьдлительное нажатие на слушателя вашей кнопки:
mBTIncrement.setOnLongClickListener(
new View.OnLongClickListener(){
public boolean onLongClick(View arg0) {
mAutoIncrement = true;
repeatUpdateHandler.post( new RptUpdater() );
return false;
}
}
);
mBTIncrement.setOnTouchListener( new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if( (event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL)
&& mAutoIncrement ){
mAutoIncrement = false;
}
return false;
}
});
В приведенном выше случае кнопка является инкрементной.Создайте еще одну кнопку, которая установит для mAutoDecrement значение true.
И decment () будет функцией, которая установит переменную вашего экземпляра int следующим образом:
public void decrement(){
mValue--;
_value.setText( ""+mValue );
}
Вы вычисляете приращение.Да, и REP_DELAY - это статическая переменная int, установленная на 50.
Я вижу, что это отрывок из NumberPicker с открытым исходным кодом Джеффри Коула, доступный по http://www.technologichron.net/ Должна быть добавлена правильная авторская атрибуция.