Continuously increase integer value as the button is pressed

后端 未结 9 1290
长情又很酷
长情又很酷 2020-12-04 11:10

I\'m new to Android so sorry if the question is easy to answer. I have two buttons, a decrease and an increase button, and in the middle of them a TextView which displays a

9条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-04 11:32

    My way to increment value on long click is to use Timer used to check periodically if button is still pressed and than increase value, otherwise cancel timer. To update UI use Handler.

    vh.bttAdd.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
    
                final Timer timer = new Timer();
                timer.schedule(new TimerTask() {
                    @Override
                    public void run() {
                     if(vh.bttAdd.isPressed()) {
                         final int track = ((ChannelAudioTrack) channels.get(vh.getAdapterPosition())).goToNextTrack();
                      updateUI(vh,track);
                     }
                    else
                    timer.cancel();
                }
                },100,200);
    
                return true;
            }
        });
    

    Handler:

    private void updateUI(final TrackViewHolder vh, final int track)
     {
    new Handler(Looper.getMainLooper()).post(new Runnable() {
                            @Override
                            public void run() {
                                      vh.tvTrackNumber.setText(Integer.toString(track));
                            }
                        }) ;
    }
    

提交回复
热议问题