如何设置我的Android按钮被点击次数的限制

时间:2014-07-29 19:25:17

标签: android android-button

我希望我的Android按钮只能点击15次。继承了我到目前为止所做的一切。有没有人有任何想法。

// RedButton

    counter= 15;
    redAdd1 = (Button) findViewById(R.id.redButton);
    player1 = (ToggleButton) findViewById(R.id.player1Button);
    player2 = (ToggleButton) findViewById(R.id.player2Button);
    player1ScoreDisplay= (TextView) findViewById(R.id.player1Score);
    player2ScoreDisplay= (TextView) findViewById(R.id.player2Score);
    counterDisplay= (TextView) findViewById(R.id.count);


    redAdd1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        if (player1.isChecked()) {
            counter -= 1;
            counterDisplay.setText("" + counter);

        if (player2.isChecked()) {
            counter -= 1;
            counterDisplay.setText("" + counter);

        }
        if (counter == 0); {
            redAdd1.setEnabled(false);
        }
    }
});

2 个答案:

答案 0 :(得分:0)

由于我不熟悉你想要的东西,让我们从头开始,你可以按照你的意愿修改它:

Integer maxclicks = 5; Integer currentnumber = 0;

button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
           if (currentnumber == maxclicks); {
               button.setEnabled(false);
           } else {
               currentnumber = currentnumber + 1;
           }
        } });

正如您所看到的,我们保持简单,并将当前和最大点击变量分开。

答案 1 :(得分:0)

当它可重复使用时更好。只需将onclicklistener包装为以下装饰类的视图:

public class OnClickRateLimitedDecoratedListener implements View.OnClickListener {

private final static int CLICK_DELAY_DEFAULT = 300;
private View.OnClickListener onClickListener;
private int mClickDelay;


public OnClickRateLimitedDecoratedListener(View.OnClickListener onClickListener) {
    this(onClickListener, CLICK_DELAY_DEFAULT);
}

//customize your own delay
public OnClickRateLimitedDecoratedListener(View.OnClickListener onClickListener, int delay) {
    this.onClickListener = onClickListener;
    mClickDelay = delay;
}

@Override
public void onClick(final View v) {
    v.setClickable(false);
    onClickListener.onClick(v);

    v.postDelayed(new Runnable() {
        @Override
        public void run() {
            v.setClickable(true);
        }
    }, mClickDelay);
}

}