如何将复选框设置为字符串中的自定义文本并保存到数据库中?

时间:2018-03-26 10:27:02

标签: android android-sqlite android-checkbox

我正在研究android。我的app中有一个复选框,我想在选中或不检查复选框时保存自定义文字。

CheckBox atbSealedCheckBox;
String selectedAtbSealedValue ="";
atbSealedCheckBox = (CheckBox) view.findViewById(R.id.atbCheckBox);

现在,如果我选中了checkbox,那么我希望Yes存储No。另外,我想将它存储在我的数据库中。为此,我已在get

中创建了setModel方法
private String atbSealed;

public String getAtbSealed(){return atbSealed;}

public void setAtbSealed(String atbSealed){this.atbSealed=atbSealed;}

更新1

根据建议,我在下面尝试过

atbSealedCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

            if(isatbSealedChecked)
            {
                selectedAtbSealedValue = "Yes";
                ctQuantitySpinner.setEnabled(false);
                ctQuantitySpinner.setSelection(0);
                isatbSealedChecked = true;
            }
            else
            {
                selectedAtbSealedValue = "No";
                ctQuantitySpinner.setEnabled(true);
                ctQuantitySpinner.setSelection(0);
                isatbSealedChecked = false;
            }

        }
    });

但它并没有帮助我。此外,ctQuantitySpinner未在atbSealedCheckbox检查时停用。此外,如果选中,则复选框的布尔值不会更改为true。虽然在log我确实看到selectedAtbSealedValue,但未在应用中设置。在我的SaveDataLocal()函数中,我设置了如下的值

 survey.setAtbSealed(this.selectedAtbSealedValue);
 SurveyManager dbHelper = new SurveyManager(getActivity());
    dbHelper.addSurvey(survey);

我也尝试过以下代码

 atbSealedCheckBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(((CheckBox)v).isChecked())
            {
                ctQuantitySpinner.setEnabled(false);
                ctQuantitySpinner.setSelection(0);

                selectedAtbSealedValue = "Yes";
                isatbSealedChecked = true;
                //atbCheckBoxEdittext.setText(selectedAtbCheckBox);
            }
            else {
                ctQuantitySpinner.setEnabled(true);
                ctQuantitySpinner.setSelection(0);
                selectedAtbSealedValue = "No";
                isatbSealedChecked = false;
                //atbCheckBoxEdittext.setText(selectedAtbCheckBox);
            }
        }
    });

此代码向我显示selected checkbox value,禁用spinner并将微调器值设置为null。但是同样没有保存复选框值。

如何在字符串中保存自定义文字?

3 个答案:

答案 0 :(得分:1)

试试这个,它对我有用:

atbSealedCheckBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged( CompoundButton buttonView, boolean isChecked ) {
            if (isChecked) {
               selectedAtbSealedValue = "yes";
            } else {
               selectedAtbSealedValue = "no";
            }
        }
    } );

之后,您可以将selectedAtbSealedValue存储到DB中;

更新:您的固定代码:

atbSealedCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

        if(b)
        {
            selectedAtbSealedValue = "Yes";
            ctQuantitySpinner.setEnabled(false);
            ctQuantitySpinner.setSelection(0);
            isatbSealedChecked = true;
        }
        else
        {
            selectedAtbSealedValue = "No";
            ctQuantitySpinner.setEnabled(true);
            ctQuantitySpinner.setSelection(0);
            isatbSealedChecked = false;
        }

    }
});

答案 1 :(得分:0)

只要我理解了您的问题,您就希望在用户选中复选框时更改此变量String selectedAtbSealedValue ="";

要实现此声明,您可以使用在用户选中或从复选框中删除支票后立即触发的onCheckedListener。

atbSealedCheckBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged( CompoundButton buttonView, boolean isChecked ) {
                // Todo something.
            }
        } );

答案 2 :(得分:0)

这会对你有所帮助。 在提交按钮处获取复选框的当前值。

 submit_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            control_of_vectors_value = control_of_vectors_checkbox.isChecked() == true ? "yes" : "no";  }}