我有一堆动态按钮,我在创建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;
}
}
});
如果用户再次点击它,它将变回上一个颜色 - 但是......
如果用户点击之前未点击过的其他动态按钮之一,则会退出计数器。
我需要知道按钮是否已被点击,如果没有,应将用户标记为存在。
目前,如果在一个按钮上我单击它并将用户标记为存在,然后移动到下一个按钮,我将不得不单击它一次(由于计数器而将用户标记为缺席)然后再次按下它将用户标记为存在。
我需要柜台单独处理每个按钮,任何想法如何实现这一点?
答案 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侦听器。
如果这达到了你想要的效果,请告诉我。如果您在运行此代码时遇到问题,请务必告知我们是否有评论,我们会将其解决