2012-03-28 12 views
0

私はチェックボックスを使用してデータベースにデータを挿入しようとしていますが、その方法についてはわかりません。ユーザーがチェックボックスを選択して更新ボタンをクリックすると、データベースに挿入されます。チェックボックスを使用してデータベースにデータを挿入する方法は?

ここに私のコードです。

CXATest1Activity

public class CXATest1Activity extends Activity { 
/** Called when the activity is first created. */ 
DBCXAAdapter db = new DBCXAAdapter(this); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //set up main content view 
    setContentView(R.layout.main); 

    Button button1main = (Button) findViewById(R.id.Button01main); 

    button1main.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 

     db.open(); 

      EditText editTextName = (EditText)findViewById(R.id.EditTextName); 
      String NameValue = editTextName.getText().toString(); 

      EditText editTextAge = (EditText)findViewById(R.id.EditTextAge); 
      String AgeValue = editTextAge.getText().toString(); 

      EditText editTextMedicalBackgroundBody = (EditText)findViewById(R.id.EditTextMedicalBackgroundBody); 
      String MedicalBackgroundBodyValue = editTextMedicalBackgroundBody.getText().toString(); 

      Spinner editTextSpinnerGenderType = (Spinner)findViewById(R.id.SpinnerGenderType); 
      String GenderTypeValue = editTextSpinnerGenderType.getSelectedItem().toString(); 

      Spinner editTextSpinnerMedicalBackgroundSelectType = (Spinner)findViewById(R.id.SpinnerMedicalBackgroundSelectType); 
      String MedicalBackgroundSelectTypeValue = editTextSpinnerMedicalBackgroundSelectType.getSelectedItem().toString(); 

      CheckBox editTextCheckboxMedicalBackgroundCancer = (CheckBox)findViewById(R.id.checkBoxCancer); 
      String MedicalBackgroundCancerValue = editTextCheckboxMedicalBackgroundCancer.getText().toString(); 

      editTextCheckboxMedicalBackgroundCancer.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 


      long id; 
      id = db.insertUserprofile(NameValue, AgeValue, MedicalBackgroundBodyValue, GenderTypeValue, MedicalBackgroundSelectTypeValue, MedicalBackgroundCancerValue); 

      db.close(); 


       //set up dialog 
       final Dialog dialog = new Dialog(CXATest1Activity.this); 
       dialog.setContentView(R.layout.maindialog); 
       dialog.setTitle("Congrats"); 
       dialog.setCancelable(true); 
       //there are a lot of settings, for dialog, check them all out! 

       //set up text 
       TextView text = (TextView) dialog.findViewById(R.id.TextView01); 
       text.setText(R.string.lots_of_text); 

       //set up image view 
       ImageView img = (ImageView) dialog.findViewById(R.id.ImageView01); 
       img.setImageResource(R.drawable.updated_icon_new1); 

       //set up button 
       Button button = (Button) dialog.findViewById(R.id.Button01); 
       button.setOnClickListener(new OnClickListener() { 
       public void onClick(View v) { 

         dialog.dismiss(); 
        } 
       }); 
       //now that the dialog is set up, it's time to show it  
       dialog.show(); 
      } 

DBCXAAdapter事前に

//---insert a userprofile into the database--- 
public long insertUserprofile(String name, String age, String medicalbackground, String spinnergender, String spinnermedicalbackground, String checkboxmedicalbackgroundcancer) 
{ 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_NAME, name); 
    initialValues.put(KEY_AGE, age); 
    initialValues.put(KEY_MEDICALBACKGROUND, medicalbackground); 
    initialValues.put(KEY_SPINNERGENDER, spinnergender); 
    initialValues.put(KEY_SPINNERMEDICALBACKGROUND, spinnermedicalbackground); 
    initialValues.put(KEY_CHECKBOXMEDICALBACKGROUNDCANCER, checkboxmedicalbackgroundcancer); 
    return db.insert(DATABASE_TABLE, null, initialValues); 
} 

ありがとうございます。

答えて

0
 id = db.insertUserprofile(NameValue, AgeValue, MedicalBackgroundBodyValue, GenderTypeValue, MedicalBackgroundSelectTypeValue, MedicalBackgroundCancerValue); all you have to do is add listener to your checkbox which listens of checkbox activity 



editTextCheckboxMedicalBackgroundCancer.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     // TODO Auto-generated method stub 
     } 
    }); 

UPDATE

さてあなたは、あなたが常に実行されるリスナーの外insertUserprofile関数を呼び出している、チェックボックスのリスナー内で行っていません。

editTextCheckboxMedicalBackgroundCancer.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
long id; 
id = db.insertUserprofile(NameValue, AgeValue, MedicalBackgroundBodyValue, GenderTypeValue, MedicalBackgroundSelectTypeValue, MedicalBackgroundCancerValue); 

     } 
    }); 
+0

私はこのような提案を使用して疲れましたが、機能しませんでした。 Wheather私はチェックボックスをチェックしたかどうか、それはまだデータベースに "Cancer"の値を挿入します。 私が書いているはずのコードはありますか? –

+0

私はあなたが言ったようにしましたが、 "別の方法で定義された内部クラスの中で、最終的ではない測定可能なAgeValueを参照できません"というエラーがあります。また、私はcreate()のpublic voidがエラーを引き起こしていると思います。 CXATest1Activity.javaクラスを編集して、前に追加していないpublic void menthodを追加しました。 –

+0

ユーザーがチェックボックスをクリックしない場合、チェックボックスはデータをデータベースに挿入しません。それ、どうやったら出来るの? –

関連する問題