Как установить флажок для произвольного текста в строке и сохранить в базе данных?

Я работаю над android. У меня есть флажок в моем app, и я хочу сохранить собственный текст напротив своего флажка, когда он установлен или нет.

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

Теперь, если я проверил checkbox, я хочу сохранить Yes, иначе No. Кроме того, я хочу сохранить его в своей БД. Для этого я уже создал методы get и set в моем Model.

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. но опять же значение флажка не сохраняется.

Как я могу сохранить произвольный текст в строке?

2
0
127
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Насколько я понимаю ваш вопрос, вы хотите изменить эту переменную 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;
        }

    }
});

Вы пробуете Журнал для значения selectedAtbSealedValue

Tung Tran 27.03.2018 06:11

Да, в любом случае пусто

Moeez 27.03.2018 06:16

конечно, я добавлю это

Moeez 27.03.2018 06:20

Почему вы не используете boolean b, b = true отмечен, b=false не отмечен

Tung Tran 27.03.2018 06:48

если (б) {selectedAtbSealedValue = "Да"; ctQuantitySpinner.setEnabled (ложь); ctQuantitySpinner.setSelection (0); isatbSealedChecked = true; } еще {selectedAtbSealedValue = "Нет"; ctQuantitySpinner.setEnabled (истина); ctQuantitySpinner.setSelection (0); isatbSealedChecked = false; }

Tung Tran 27.03.2018 06:50

Позвольте нам продолжить обсуждение в чате.

Moeez 27.03.2018 07:01

Пожалуйста, давай в чат

Moeez 27.03.2018 07:03
private CheckBox atbSealedCheckBox; private String selectedAtbSealedValue = ""; это глобальные переменные
Tung Tran 27.03.2018 08:52
private String selectedAtbSealedValue = ""; поместил это вне onCreate () (глобальная переменная). Он не может изменить значение на да или нет, потому что он автоматически преобразуется в конечную переменную в onCreate ()
Tung Tran 27.03.2018 09:04

Да, они оба global

Moeez 27.03.2018 09:23

И не окончательный?

Tung Tran 27.03.2018 09:28

Это вам поможет. При нажатии кнопки отправки получить текущее значение флажка.

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

Другие вопросы по теме