如何在下一次单击时更改按钮的背景

时间:2016-09-08 09:19:18

标签: android

目前我有一个TextView列表,其第一次点击时背景会发生变化。但我也希望当用户第二次点击其背景时再次改变,反之亦然。

使用我现有的代码,我只能更改第一次点击的背景,当我再次点击它时,它的背景不会改变。

这是我的代码:

 public void onClick(View v) {


        switch (v.getId()) {
            case R.id.goalText1:
                if (count <= 2) {
                    goals.add(mGoal1.getText().toString());
                    mGoal1.setTextColor(getResources().getColor(R.color.black));
                    mGoal1.setBackgroundColor(getResources().getColor(R.color.white));
                    count++;

                } else {
                    Toast.makeText(SelectGoal.this, "cant select more", Toast.LENGTH_SHORT).show();
                }
                break;

            case R.id.goalText2:

                if (count <= 2) {
                    goals.add(mGoal2.getText().toString());
                    mGoal2.setTextColor(getResources().getColor(R.color.black));
                    mGoal2.setBackgroundColor(getResources().getColor(R.color.white));
                    count++;
                } else {
                    Toast.makeText(SelectGoal.this, "cant select more", Toast.LENGTH_SHORT).show();
                }
                break;

            case R.id.goalText3:

                if (count <= 2) {
                    goals.add(mGoal3.getText().toString());
                    mGoal3.setTextColor(getResources().getColor(R.color.black));
                    mGoal3.setBackgroundColor(getResources().getColor(R.color.white));
                    count++;
                } else {
                    Toast.makeText(SelectGoal.this, "cant select more", Toast.LENGTH_SHORT).show();
                }
                break;

            case R.id.goalText4:

                if (count <= 2) {
                    goals.add(mGoal4.getText().toString());
                    mGoal4.setTextColor(getResources().getColor(R.color.black));
                    mGoal4.setBackgroundColor(getResources().getColor(R.color.white));
                    count++;
                } else {
                    Toast.makeText(SelectGoal.this, "cant select more", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.goalText5:

                if (count <= 2) {
                    goals.add(mGoal5.getText().toString());
                    mGoal5.setTextColor(getResources().getColor(R.color.black));
                    mGoal5.setBackgroundColor(getResources().getColor(R.color.white));
                    count++;
                } else {
                    Toast.makeText(SelectGoal.this, "cant select more", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.goalText6:

                if (count <= 2) {
                    goals.add(mGoal6.getText().toString());
                    mGoal6.setTextColor(getResources().getColor(R.color.black));
                    mGoal6.setBackgroundColor(getResources().getColor(R.color.white));
                    count++;
                } else {
                    Toast.makeText(SelectGoal.this, "cant select more", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.goalText7:

                if (count <= 2) {
                    goals.add(mGoal7.getText().toString());
                    mGoal7.setTextColor(getResources().getColor(R.color.black));
                    mGoal7.setBackgroundColor(getResources().getColor(R.color.white));
                    count++;
                } else {
                    Toast.makeText(SelectGoal.this, "cant select more", Toast.LENGTH_SHORT).show();
                }
                break;


            case R.id.btnGoal:
                Intent intent = new Intent(this, fiteness_level_selection.class);


                try {
                    obj.put("SelectedGoal", goals);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                intent.putExtra("GoalJson", obj.toString());
                startActivity(intent);
                break;


        }

所以有人可以建议我任何简单的方法来实现它。

3 个答案:

答案 0 :(得分:0)

正如我所理解的那样,您希望更改后台以获取bool变量,并在Button点击中,您必须检查bool值。

Boolean click_firsttime = false;

Button点击

使用这种方式

If(click_firsttime == false){
//perform task 

// and set bool value to true
click_firsttime  = true;
}else{

// perform task and set bool value

click_firsttime  = false;
}

答案 1 :(得分:0)

首先创建一个布尔值:

 private boolean foo = true;

然后改变你的代码:

public void onClick(View v) {


    switch (v.getId()) {
        case R.id.goalText1:
            if (foo) {
                goals.add(mGoal1.getText().toString());
                mGoal1.setTextColor(getResources().getColor(R.color.black));
                mGoal1.setBackgroundColor(getResources().getColor(R.color.white));
                count++;
                foo = false;
            } else {
                // set background to another color
                foo = true;
            }
            break;

答案 2 :(得分:0)

在您的活动中设置一个布尔数组。

//suppose you've 3 textviews within listview     
public boolean isTransparent[] = {false,false,false};

然后在你的onClick方法中执行此操作。

public void onOnclick(View v){
    switch (v.getId()) {
        //foreach textview do this
        case R.id.textView1 : 
            int color;
            if (isTransparent[0])
                color = getResources().getColor(android.R.color.transparent);
            else
                color = getResources().getColor(R.color.white);
            isTransparent[0]=!isTransparent[0];
            textview1.setBackgroundColor(color);
            break;
       case R.id.textView2:
            // now check for isTransparent[1]
            and so on ...
            ...

    }
}