2011-03-04 145 views
1

我想建立複選框從getLang()獲取光標是否KEY_ACT語言= 1,則複選框是真的GET值設置複選框

這是我getLang()

public Cursor getLang() { 
    return db.query(LANGS_TABLE, new String[] { 
      KEY_LANG_ID, 
      KEY_LANG, 
      KEY_ACT}, 
      null, null, null, null, null, null); 
} 

和我有這樣

  ContentValues initialValues3 = new ContentValues(); 
     initialValues3.put(KEY_LANG, "English"); 
     initialValues3.put(KEY_ACT, "1"); 
     db.insert(LANGS_TABLE, null, initialValues3); 
     initialValues3.clear(); 
     initialValues3.put(KEY_LANG, "French"); 
     initialValues3.put(KEY_ACT, "0"); 
     db.insert(LANGS_TABLE, null, initialValues3); 
     initialValues3.clear(); 
     initialValues3.put(KEY_LANG, "German"); 
     initialValues3.put(KEY_ACT, "0"); 
     db.insert(LANGS_TABLE, null, initialValues3); 
     initialValues3.clear(); 
     initialValues3.put(KEY_LANG, "Italy"); 
     initialValues3.put(KEY_ACT, "0"); 
     db.insert(LANGS_TABLE, null, initialValues3); 
     initialValues3.clear(); 
     initialValues3.put(KEY_LANG, "Spanish"); 
     initialValues3.put(KEY_ACT, "0"); 
     db.insert(LANGS_TABLE, null, initialValues3); 
     initialValues3.clear(); 

數據庫,所以當複選框顯示,英國必須證明選擇,因爲KEY_ACT = 1

,這是我的複選框代碼

protected void printSelectedLanguage(){ 
    int i = 0; 
    db.open(); 
    Cursor c = db.getLang(); 
    for(i = 0; i < _options.length-1; i++) 
    { 
     if (c.getString(c.getColumnIndex(DBAdapter.KEY_ACT)).equals(1)){ 
      _selections[i]=true; 
     } 
     if (_selections[i]==true) { 
      db.setLang_Act(i+1, 1); 
     }else if (_selections[i]==false){ 
      db.setLang_Act(i+1, 0); 
     } 
    } 

,但它並沒有顯示從數據庫

我應該怎麼做KEY_ACT?

///編輯爲展示更多關於對話框

protected Dialog onCreateDialog(int id) 
{ 
    return 
    new AlertDialog.Builder(this) 
     .setTitle("Select language") 
     .setMultiChoiceItems(_options, _selections, new DialogSelectionClickHandler()) 
     .setPositiveButton("OK", new DialogButtonClickHandler()) 
     .create();} 
    public class DialogSelectionClickHandler implements DialogInterface.OnMultiChoiceClickListener 
{ 
    @Override 
    public void onClick(DialogInterface dialog, int clicked, boolean selected) 
    { 
     Log.i("MEooooo", _options[ clicked ] + " selected: " + selected); 

    } 
} 

public class DialogButtonClickHandler implements DialogInterface.OnClickListener 
{ 
    @Override 
    public void onClick(DialogInterface dialog, int clicked) 

    { 
     switch(clicked) 
     { 
      case DialogInterface.BUTTON_POSITIVE: 


       printSelectedLanguage(); 
       break; 
      case DialogInterface.BUTTON_NEGATIVE: 

       printSelectedLanguage(); 
       break; 
     } 
    } 
} 

回答

1

如何在.equals()比較中使用"1"而不是1

如果1是真實的,0是假的,你也可以檢索字段爲int:

if (c.getInt(c.getColumnIndex(DBAdapter.KEY_ACT)) == 1) { 

編輯 - 你可能想通過實際的光標,因爲你的數據庫設置的設置相匹配setMultipleChoiceItems()期待:

new AlertDialog.Builder(this) 
    .setTitle("Select language") 
    .setMultiChoiceItems(cursor, KEY_ACT, KEY_LANG, new DialogSelectionClickHandler()) 
    .setPositiveButton("OK", new DialogButtonClickHandler()) 
    .create(); 
+0

它仍然不顯示覆選標記,請幫助 – 2011-03-04 18:35:19

+0

你可以粘貼代碼,你實際上啓用/設置複選框? – 2011-03-04 18:36:51

+0

請參閱我的編輯從此代碼它可以選擇語言已經但它不顯示檢查(KEY_ACT = 1)從數據庫 – 2011-03-04 18:48:22

0

你會好起來的存儲KEY_ACT作爲布爾或INT不會你提醒我的複選框?這種方式使用複選框可以更流暢地工作。

您是否確定調用c.moveToNext()或c.moveToFirst()來獲取遊標中的記錄?

爲了保持應用程序的整潔,請務必在完成遊標後再調用c.close()。

+0

KEY_ACT爲int,但它仍然沒有顯示對勾 – 2011-03-04 18:36:35