2012-05-21 66 views
-3

所以我試圖完成的事情應該是完全一樣的:http://www.javascriptbank.com/simple-javascript-auto-sum-with-checkboxes.html/en/自動求和複選框

可惜我不是舒爾如果多數民衆贊成甚至有可能,所以我希望得到任何形式的幫助或想法。謝謝advance.Some件事,我至今:

CheckBox chkone; 
CheckBox chktwo; 
CheckBox chkthree; 
TextView tv; 
OnClickListener checkBoxListener; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    chkone = (CheckBox)findViewById(R.id.chk1); 
    chktwo = (CheckBox)findViewById(R.id.chk2); 
    thkthree = (CheckBox)findViewById(R.id.chk3); 


checkBoxListener = new OnClickListener() { 

     //@Override 
     public void onClick(View v) { 

      tv = (TextView)findViewById(R.id.tv1); 

      if (chkone.isChecked()) 
      { 
       // something 

      } 

     } 
    }; 

    chkone.setOnClickListener(checkBoxListener); 
    chktwo.setOnClickListener(checkBoxListener); 
    chkthree.setOnClickListener(checkBoxListener); 

回答

0

您應該實現CompoundButton'sOnCheckedChangeListener接口代替,以獲取有關該複選框的狀態更改的通知。

假設您沒有擴展CheckBox類以通過在某處存儲數值來簡化您的工作,則需要解析複選框的標籤(文本)以訪問其值,並根據選中的狀態增加/減少的總和:

private TextView sumText; 
private float currentSum = 0; 
private final OnCheckedChangeListener checkBoxListener = 
    new OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     if (isChecked) 
      currentSum += getNumber(buttonView); 
     else 
      currentSum -= getNumber(buttonView); 
     // TODO: you need to initialize this TextView in your 
     // onCreate method! 
     sumText.setText(Float.toString(currentSum)); 
    } 
}; 

private float getNumber(final CompoundButton chk) 
{ 
    try 
    { 
     return Float.parseFloat(chk.getText().toString()); 
    } 
    catch (NumberFormatException e) 
    { 
     return 0; 
    } 
} 

注意,對於這個工作,你指望它,你應該修改getNumber方法來檢索,實際上是根據該CheckBox實例的值!

+0

OOOOOO非常感謝你的工作完美! – marko1234