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

How to set checkbox to a custom text in string and save into database?

我正在研究 android。我的 app 中有一个复选框,无论是否选中,我都想针对我的复选框保存自定义文本。

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

现在,如果我选中 checkbox,那么我想存储 Yes,否则 No。另外,我想将它存储在我的数据库中。为此,我已经在 Model

中创建了 getset 方法
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。但复选框值再次未保存。

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

只要我理解你的问题,你想在用户选中你的复选框时更改此变量 String selectedAtbSealedValue ="";

要实现此声明,您可以使用 onCheckedListener,它会在用户选中或从您的复选框中取消选中时立即触发。

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

试试这个,对我有用:

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

之后,您可以将selectedAtbSealedValue存储到数据库中;

更新:您的固定码:

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;
        }

    }
});

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

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