如何添加或减少两个动态复选框值

时间:2015-11-09 11:38:12

标签: android

我有动态复选框,其值为 复选框1 = 20美元 复选框2 = 10美元 如果我单击一个复选框,则该值应反映在文本视图中,如果我选中两个复选框,则应将该值添加到该文本视图或取消选中该值应从该文本视图中减去的复选框。 此复选框值是动态来的,因此我需要添加/减去这两个值并在文本视图中显示总值。 我该怎么办,请帮助我。 提前致谢

4 个答案:

答案 0 :(得分:0)

对于复选框,我们有一个事件监听器OnCheckedChangeListener

覆盖两个Checkbox的侦听器(例如chkBox1,chkBox2)和

检查

int value1,value2;
if(chkBox1.isChecked){
//store value of this checkbox into one variable  i.e.
value1 = value of chkBox1;
}else{
// reset value for this chkBox1 i.e
value1 = 0;
}

if(chkBox2.isChecked){
//store value of this checkbox into one variable  i.e.
value2 = value of chkBox2;
}else{
// reset value for this chkBox2 i.e
value2 = 0;
}
int sum = value1 + value2;
textView.setText(sum + "");

答案 1 :(得分:0)

使用OnCheckedChangeListeners完成任务

 chkBox1.setOnCheckedChangeListener(eventListener);
 chkBox2.setOnCheckedChangeListener(eventListener);

 CompoundButton.OnCheckedChangeListener eventListener=new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        switch (buttonView.getId())
        {
            case R.id.chk1;
                if(isChecked)
                {
                    //do your first task
                    //set your textbox values
                }
                break;
            case R.id.chk2:
                if(isChecked)
                {
                    //do your second task
                    //set your second text values
                }
                break;
        }


    }
};

答案 2 :(得分:0)

    if you dont have t0o many check box and iteration is fine than you can try following code.

    public void addUserType(ProObj obj)
        {
            final CheckBox cb = new CheckBox(getActivity());
            cb.setText(obj.getamount());
            cb.setTag(obj);
            layUsertype.post(new Runnable() {
                public void run() {
                    layUsertype.addView(cb);
                }
            });

//any listener method

        cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                double sum = 0.0;
                int childcount = layUsertype.getChildCount();
                for (int i=0; i < childcount; i++){
                    View v = layUsertype.getChildAt(i);
                    if(v instanceof CheckBox)
                    {
                        CheckBox cb = (CheckBox)v;
                        if(cb.isChecked())
                        {
                            if(cb.getTag() instanceof ProObj )
                            {
                                sum+=((UserTypesObj) cb.getTag()).getamount();
                            }
                        }
                    }
                }
            }
//update logic
        });
    }

答案 3 :(得分:0)

听到经过测试的代码,工作正常......

试试这个

public class MainActivity extends Activity implements OnCheckedChangeListener {

CheckBox cb1, cb2;
TextView tv1;
int count = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    cb1 = (CheckBox) findViewById(R.id.checkBox1);
    cb2 = (CheckBox) findViewById(R.id.checkBox2);
    tv1 = (TextView) findViewById(R.id.textView1);

    cb1.setOnCheckedChangeListener(this);
    cb2.setOnCheckedChangeListener(this);
}

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (buttonView.getId() == R.id.checkBox1) {
        if (isChecked) {
            count = count + Integer.parseInt(cb1.getText().toString());
        } else {
            if (count != 0) {
                count = count - Integer.parseInt(cb1.getText().toString());
            }
        }
        tv1.setText("" + count);
    }
    if (buttonView.getId() == R.id.checkBox2) {
        if (isChecked) {
            count = count + Integer.parseInt(cb2.getText().toString());
        } else {
            if (count != 0) {
                count = count - Integer.parseInt(cb2.getText().toString());
            }
        }
        tv1.setText("" + count);
    }
}
}

祝你好运..