2015-12-08 29 views
1

我有7個複選框,如果選中,每個複選框將根據用戶輸入(數字)計算3個edittext。如果用戶沒有選中,3 edittext setEnabled(false); 因此,我在執行保存按鈕時遇到問題,如果所有複選框都被選中,則無法保存。我只想選擇複選框可以做到保存在sqlite數據庫和計算3 ediitext。如何在android數據庫中設置保存複選框值而不檢查Android中的所有複選框?

這裏是我的代碼,

p1=(CheckBox)findViewById(R.id.cek1); 
cp1=(EditText) findViewById(R.id.editcp1); 
cp12=(EditText) findViewById(R.id.editcp12); 
cp13=(EditText) findViewById(R.id.editcp13); 

    p1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
        @Override 
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked){ 
        palm1=longitude+","+latitude; 
        Toast.makeText(getBaseContext(), palm1, Toast.LENGTH_SHORT).show(); 
        percentage(); 

        cp1.setEnabled(true); 
        cp1.setFocusable(true); 
        cp12.setEnabled(true); 
        cp12.setFocusable(true); 
        cp13.setEnabled(true); 
        cp13.setFocusable(true); 

        String larva1 = cp1.getText().toString().trim(); 
        String larva12 = cp12.getText().toString().trim(); 
        String pupa1 = cp13.getText().toString().trim(); 

       }else{ 
        palm1="-"; 
        Toast.makeText(getBaseContext(), palm1, Toast.LENGTH_SHORT).show(); 
        cp1.setEnabled(false); 
        cp1.setFocusable(false); 
        cp12.setEnabled(false); 
        cp12.setFocusable(false); 
        cp13.setEnabled(false); 
        cp13.setFocusable(false); 

       } }}); 

這裏當執行保存按鈕

save = (Button)findViewById(R.id.btnsave); 
    save.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

    int lv1= Integer.parseInt(larva1); 
    int lv12= Integer.parseInt(larva12); 
    int pup1= Integer.parseInt(pupa1); 

    int total=lv1+lv12+pup1; 
    String totallv1=Integer.toString(ttllv1); 

    upd.setpalm1(palm1); 
    upd.setlarva1(larva1); 
    upd.setlarva12(larva12); 
    upd.setpupa1(pupa1); 
    upd.settotal1(totallv1); 

    db.addUPD(upd); 
    db.close(); 
    }}); 

然後MySQLiteHelper被處理:

public void addUPD(UPD upd){ 
Log.d("addUPD", upd.toString()); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    values.put(KEY_PALM1, upd.getpalm1()); 
    values.put(KEY_LARVA1, upd.getlarva1()); 
    values.put(KEY_LARVA12, upd.getlarva12()); 
    values.put(KEY_PUPA1, upd.getpupa1()); 
    values.put(KEY_TTL_LARVA, upd.getttl_larva()); 
    db.insert(TABLE_UPD, null, values); 
    db.close(); 
     } 

類UPD - >

public class UPD { 
private String palm1; 
private String larva1,larva12,pupa1,totallv1; 

public String getpalm1(){ 
     return palm1;} 
    public void setpalm1(String palm1) { 
      this.palm1 = palm1;} 

public String getlarva1(){ 
     return larva1;} 
    public void setlarva1(String larva1) { 
      this.larva1 = larva1;} 

    public String getlarva12(){ 
     return larva12;} 
    public void setlarva12(String larva12) { 
      this.larva12 = larva12;} 

    public String getpupa1(){ 
     return pupa1;} 
    public void setpupa1(String pupa1) { 
      this.pupa1 = pupa1;} 

public String getttl_larva(){ 
     return ttl_larva;} 
public void setttl_larva(String ttl_larva) { 
     this.ttl_larva= ttl_larva;} 

請您諮詢

+0

對不起,姐,我不明白你的問題。你是否需要保存所有複選框狀態?或者你想只保存數據庫中選中的複選框?或者是其他東西? –

+0

只有選定的複選框@ghostman –

+0

我明白了。在數據庫中最好保存所有值(7行)。只需要在數據庫中保存狀態,然後用戶選中某個複選框(在此事件上添加偵聽器)並將其值保存在數據庫的偵聽器中(不在數據庫中添加新行,只需更新現有行)即可。 –

回答

0

例如,表:

"CREATE TABLE settings (
checkId INTEGER NOT NULL, 
value INTEGER NOT NULL DEFAULT 0);" 

代碼,在檢查更改偵聽複選框:

ContentValues cv = new ContentValues(); 
cv.put("value", isChecked); //checkbox value 
db.update("settings", cv, "checkId LIKE ?", new String[] {checkBoxIndex}); 
+0

可以請你幫我基於我的代碼?我是移動應用程序的新手... –

相關問題