2011-03-04 110 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