2013-04-12 23 views
1

爲什麼在啓動此適配器的活動時onChekedChanged事件觸發?如何避免這種情況?onCheckedChanged

class ScheduleAdapter extends BaseAdapter { 
    SPMMainActivity context; 
    LayoutInflater inflater; 
    ArrayList<Action> actions; 

    OnCheckedChangeListener myCheckChangList = new OnCheckedChangeListener() { 
     public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
      SPMManager.getSPMManager().setEnabled((Integer)buttonView.getTag() , isChecked); 
      Log.d("debug","onChecked..."); 
      context.setNextAction(); 
      SPMManager.getSPMManager().update(); 
     } 
    }; 
... 

UPD:解決方案是使用的onClick代替

private OnClickListener checkbox_click_listener = new OnClickListener(){ 
     public void onClick(View v) { 
      CheckBox c = (CheckBox) v ; 
      SPMManager.getSPMManager().setEnabled((Integer)v.getTag() , c.isChecked()); 
      Log.d("onchecked","OnChecked changed"); 
      context.setNextAction(); 
      SPMManager.getSPMManager().update(); 
     } 
    }; 

回答

1
boolean isFirst = false; 
    OnCheckedChangeListener myCheckChangList = new OnCheckedChangeListener() { 

     public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
      if(isFirst){ 
       // Put your code here 
      } else 
       isFirst = false; 
     } 
    }; 
+0

它沒有幫助。 onCheckedChanged仍然會在活動啓動或恢復時調用 – Hemul

+0

,因爲'isFirst'的默認值必須是'false'而不是'true',我沒有感覺就犯了一個錯誤。 –

相關問題