2016-09-09 13 views
0

いくつかの目標が定義されているテキストビューのリストがあります。ユーザーは最大3つの目標を選択できます。彼はまた、彼の選択したゴールを選択解除し、別のゴールを選択することもできる。現在私がやったことは、ユーザーが3つのゴールだけを選ぶことができますが、ユーザーがゴールを選択解除して別のゴールを選択しようとした場合です。ここで選択ボタンと選択解除ボタン

私のコードは次のとおりです。

public void onClick(View v) { 


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

       } else { 
        isSelected = true; 
        goals.remove(mGoal1.getText().toString()); 
        mGoal1.setTextColor(getResources().getColor(R.color.white)); 
        mGoal1.setSelected(false); 

       } 
       break; 

      case R.id.goalText2: 

       if (count <= 2 && isSelected) { 
        goals.add(mGoal2.getText().toString()); 
        mGoal2.setTextColor(getResources().getColor(R.color.black)); 
        count++; 
        mGoal2.setSelected(true); 
        isSelected=false; 
       } else { 
        isSelected = true; 
        goals.remove(mGoal1.getText().toString()); 
        mGoal2.setTextColor(getResources().getColor(R.color.white)); 
        mGoal2.setSelected(false); 
        Toast.makeText(getApplicationContext(), "select upto 3 fitness goals only " , Toast.LENGTH_LONG).show(); 

       } 
       break; 

      case R.id.goalText3: 

       if (count <= 2 && isSelected) { 
        goals.add(mGoal3.getText().toString()); 
        mGoal3.setTextColor(getResources().getColor(R.color.black)); 
        count++; 
        mGoal3.setSelected(true); 
        isSelected=false; 
       } else { 
        isSelected = true; 
        goals.remove(mGoal1.getText().toString()); 
        mGoal3.setTextColor(getResources().getColor(R.color.white)); 
        mGoal3.setSelected(false); 
        Toast.makeText(getApplicationContext(), "select upto 3 fitness goals only " , Toast.LENGTH_LONG).show(); 

       } 
       break; 

      case R.id.goalText4: 

       if (count <= 2 && isSelected) { 
        goals.add(mGoal4.getText().toString()); 
        mGoal4.setTextColor(getResources().getColor(R.color.black)); 
        count++; 
        mGoal4.setSelected(true); 
        isSelected=false; 
       } else { 
        isSelected = true; 
        goals.remove(mGoal1.getText().toString()); 
        mGoal4.setTextColor(getResources().getColor(R.color.white)); 
        mGoal4.setSelected(false); 
        Toast.makeText(getApplicationContext(), "select upto 3 fitness goals only " , Toast.LENGTH_LONG).show(); 

       } 
       break; 
+0

そのようなものを試してみてください。 if(count> 0) --count; elseブランチ – canisLupusLupus

+0

@gaurav tiwariあなたはisSelectedとして1つの妥当な値から値をチェックしているので、それはあなたを助けてくれませんので、上記のコードが方向を向いているので、リストを使用して値を追加し、それがリストに存在するかどうかチェックして、それを管理してください。 – Vickyexpert

+0

@Vickyexpertあなたは私にいくつかの例を教えてもらえませんでしたか? –

答えて

0

まず最初の目標のために、このロジックを適用し、それは、あなたが変更IDおよびすべてのような小さな変更ですべての目標のために適用することができます働いされているかどうか確認し、

case R.id.goalText1: 
      if (goals.size <= 2 && ! mGoal1.isSelected()) 
      { 
       goals.add(mGoal1.getText().toString()); 
       mGoal1.setTextColor(getResources().getColor(R.color.black)); 
       mGoal1.setSelected(true); 

      } else { 
       goals.remove(mGoal1.getText().toString()); 
       mGoal1.setTextColor(getResources().getColor(R.color.white)); 
       mGoal1.setSelected(false); 

      } 
      break; 
+0

これは私の多くの時間を節約します。 –

+0

ようこそ!あなたのコーディングをお楽しみください – Vickyexpert

関連する問題