-3

所以我想要完成的事情应该是这样的:http ://www.javascriptbank.com/simple-javascript-auto-sum-with-checkboxes.html/en/

不幸的是,如果那可能的话,我不知道,所以我将不胜感激任何帮助或想法。在此先感谢。到目前为止我所拥有的一些东西:

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);
4

1 回答 1

0

您应该CompoundButton's OnCheckedChangeListener改为实现该接口,以获取有关复选框状态更改的通知。

假设您没有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实例下的值!

于 2012-05-21T19:06:32.830 回答