如何检查是否已单击按钮

时间:2018-01-12 20:40:06

标签: android counter onclicklistener

我有一堆动态按钮,我在创建onClickListeners时设置它们,并使用ID标记它们。

不确定这是一个我刚刚花了太多时间盯着的简单的,但这就是问题。

如果用户点击某个按钮,它会改变颜色,这很简单,并且已通过以下方式实现:

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {


if (counter == 0) {

button.setBackgroundColor(Color.parseColor("#FF4DCBBF"));

Toast.makeText(getActivity(), "User Has Been Marked As Present",Toast.LENGTH_LONG).show();

//change boolean value

userPresent = true;

counter++;

} else {

button.setBackgroundColor(Color.parseColor("#FFFFFF"));

Toast.makeText(getActivity(), "User Has Been Marked As Absent",Toast.LENGTH_LONG).show();

//change boolean value

userPresent = false;

counter = 0;
}

}
});

如果用户再次点击它,它将变回上一个颜色 - 但是......

如果用户点击之前未点击过的其他动态按钮之一,则会退出计数器。

我需要知道按钮是否已被点击,如果没有,应将用户标记为存在。

目前,如果在一个按钮上我单击它并将用户标记为存在,然后移动到下一个按钮,我将不得不单击它一次(由于计数器而将用户标记为缺席)然后再次按下它将用户标记为存在。

我需要柜台单独处理每个按钮,任何想法如何实现这一点?

2 个答案:

答案 0 :(得分:0)

一旦用户被标记为存在,可能会禁用该按钮的onClick侦听器,因为您不再需要它了吗?

答案 1 :(得分:0)

我并不是说听起来居高临下,但我无法理解你想要实现的目标,但是如果每个按钮应该包含关于用户的不同信息,为什么不制作一个自定义按钮呢? ?在包中创建一个名为customButton的类,并在其中粘贴以下代码:

fo:character

然后,在onClick方法内(在您之前显示的活动片段中),您可以调用

import android.content.Context;
import android.widget.Button;

public class customButton extends Button {

boolean haveIBeenClicked; //false by default
public customButton(Context context) {
    super(context);
    }

public void toggleHaveIBeenClicked(){
    haveIBeenClicked=!haveIBeenClicked;
    updateBackgroundColor();    

}

void updateBackgroundColor(){
if (haveIBeenClicked){
    this.setBackgroundColor(Color.parseColor("#FF4DCBBF"));
}
else{

    this.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
    }

}

...创建了一个customButton对象并在其上设置了一个on click侦听器。

如果这达到了你想要的效果,请告诉我。如果您在运行此代码时遇到问题,请务必告知我们是否有评论,我们会将其解决