2017-11-23 16 views
0

私はsetOnCheckedChangeListenerを実装するbindViewメソッドを持っています。ただし、このメソッドを初期化すると、onCheckedChangedメソッドが体系的に呼び出されます。どうすればこの問題を回避できますか?ここに私のコードです:onCheckedChangedシステム初期化時に呼び出されるメソッド

public void bindView(View view, Context context, Cursor cursor) { 
    super.bindView(view, context, cursor); 

    alarm_activation = cursor.getColumnIndexOrThrow(mydb.ALARMS_ACTIVATED); 
    activationInt = cursor.getInt(alarm_activation); 
    alarm_id_ind = cursor.getColumnIndexOrThrow("rowid"); 
    alarm_id_int = cursor.getInt(alarm_id_ind); 
    StrLog = String.valueOf(alarm_id_int); 

    Log.e("Row ID", StrLog); 
    alarm_activated = (ToggleButton)view.findViewById(R.id.alarm_activated); 
    alarm_activated.setTag(alarm_id_int); 

    if (activationInt == 1) { 
     alarm_activated.setChecked(true); 
     alarm_activated.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.MULTIPLY); 
     activateAlarm(alarm_id_int); 
    } else { 
     alarm_activated.setChecked(false); 
    } 

    alarm_activated.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       buttonView.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.MULTIPLY); 
       row = (Integer) buttonView.getTag(); 
       mydb.activateAlarm(row); 
       activateAlarm(alarm_id_int); 
      } else { 
       buttonView.getBackground().setColorFilter(Color.LTGRAY, PorterDuff.Mode.MULTIPLY); 
       row = (Integer) buttonView.getTag(); 
       mydb.deactivateAlarm(row); 
      } 
     } 
    }); 
} 

ありがとうございます。

J

+3

[の可能な複製をトリガする自動を避けることができますトリガされたチェックすることによって、それを避けることができますonCheckedChanged自動的に呼び出されます(https://stackoverflow.com/questions/27641705/oncheckedchanged-called-automatically) –

+0

Ruanありがとうございます。これは確かに重複した質問です。下のソリューションの私のコメントに示されているように、私は確かに解決策を見ていたが、私はすでに "if(isChecked)"条件を持っていたので、最初はisPressed()は重複していると思った。私がisChecked節を誤って解釈していたことを認識しました(今チェックされています...)。ありがとうございました。 J – JF0001

答えて

1

あなたはそのリスナーがあなたのビューが

buttonView.isPressed() 

をチェックして、押されたりされていない後それはcheckedchangeリスナー

+0

アシフありがとうございます。私は別のスレッドでその解決策を見ていましたが、私はすでに "if(isChecked)"条件を持っていたので、最初はisPressed()が重複していると思っていました。 isChecked節(現在チェックされているように...)。あなたの時間をもう一度ありがとう。 J – JF0001

+0

あなたは大歓迎です!ハッピーコーディング –

関連する問題