如果KEY_ACT为language = 1则复选框为true,我想构建从getLang()获取光标的复选框
这是我的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();
所以当显示复选框时,英文必须显示select,因为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;
}
}
}
答案 0 :(得分:1)
如何在"1"
比较中使用1
代替.equals()
呢?
如果1
为真且0
为false,您还可以将该字段检索为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();
答案 1 :(得分:0)
你最好将KEY_ACT存储为boolean或int不是吗?这样,它可以通过复选框更加流畅地工作。
您是否确保调用c.moveToNext()或c.moveToFirst()来获取游标中的记录?
在完成光标操作后,不要忘记调用c.close(),以保持应用程序整洁。