gpt4 book ai didi

java - 来自 SQLite 数据库的 boolean 值作为整数

转载 作者:行者123 更新时间:2023-12-01 14:19:18 25 4
gpt4 key购买 nike

我正在制作一个“对错”类型的测验。因此,有两个按钮,一真一假,以及带有问题的 TextView 。我在 Assets 文件夹中导入了一个 sqlite 数据库。其中有 4 列:_id、问题、正确答案、错误答案。除问题为 TEXT 外,每一列均为 INTEGER。因此,对于每个正确答案列,我设置 0 或 1,具体取决于答案是真还是假。但是,在游戏中,无论问题是什么,我都会在左边的 TRUE 按钮上得到错误,在右边的 FALSE 按钮上得到正确。我不知道我做错了什么。无论如何,这是代码:

public class Kviz extends Activity implements OnClickListener{

Button true,false;
TextView question;

LinkedList<Long> mAnsweredQuestions = new LinkedList<Long>();

private String generateWhereClause(){
StringBuilder result = new StringBuilder();
for (Long l : mAnsweredQuestions){
result.append(" AND _ID <> " + l);
}
return result.toString();
}

private class Answer {
public Answer(int opt, boolean correct) {
option = opt;
isCorrect = correct;
}

int option;
boolean isCorrect;
}

Runnable mLaunchTask = new Runnable() {
public void run() {
nextQuestion();
}
};

Handler mHandler = new Handler();

final OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
Answer ans = (Answer) v.getTag();
if (ans.isCorrect) {
Toast.makeText(getApplicationContext(), "Correct!", Toast.LENGTH_SHORT).show();
mHandler.postDelayed(mLaunchTask,1200);
}
else{
Toast.makeText(getApplicationContext(), "Incorrect!", Toast.LENGTH_SHORT).show();
mHandler.postDelayed(mLaunchTask,1200);
}
}
};


protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.kviz);

inicijalizujVarijable();

nextQuestion();
}

private void nextQuestion() {
TestAdapter mDbHelper = new TestAdapter(this);
DataBaseHelper myDbHelper = new DataBaseHelper(this);

if(!myDbHelper.checkDataBase()){
mDbHelper.createDatabase();
}
try{

mDbHelper.open();

Cursor c = mDbHelper.getTestData(generateWhereClause());
c.moveToFirst();

mAnsweredQuestions.add(c.getLong(0));

List<Answer> labels = new ArrayList<Answer>();

if (c.getInt(2)==1){
labels.add(new Answer(c.getInt(2), true));
labels.add(new Answer(c.getInt(3), false));
tacno.setTag(labels.get(0));
netacno.setTag(labels.get(1));

}else{
labels.add(new Answer(c.getInt(2), false));
labels.add(new Answer(c.getInt(3), true));
netacno.setTag(labels.get(0));
tacno.setTag(labels.get(1));
}

true.setOnClickListener(clickListener);
false.setOnClickListener(clickListener);
}

finally{
mDbHelper.close();
}

}

private void inicijalizujVarijable() {

true = (Button) findViewById(R.id.bTacno);
false = (Button) findViewById(R.id.bNetacno);
question = (TextView) findViewById(R.id.tvPitanje);

}

public void onClick(View v) {

}

}

最佳答案

我将根据这段代码做出一些假设:

if (c.getInt(2)==1){
labels.add(new Answer(c.getInt(2), true));
labels.add(new Answer(c.getInt(3), false));
tacno.setTag(labels.get(0));
netacno.setTag(labels.get(1));
} else {
labels.add(new Answer(c.getInt(2), false));
labels.add(new Answer(c.getInt(3), true));
netacno.setTag(labels.get(0));
tacno.setTag(labels.get(1));
}

c.getInt(2)==1为true时...

  • 您向 labels 添加两个答案,因此 labels[0]=truelabels[1]=false
  • 您将 tacno 设置为 true(索引 0),将 netacno 设置为 false(索引 1)<

c.getInt(2)==1为假时...

  • 您向 labels 添加两个答案,因此 labels[0]=falselabels[1]=true
  • 您将 netacno 设置为 false(索引 0),并将 tacno 设置为 true(索引 1)<

在这两种情况下,tacno 为 true(正确),netacno 为 false(不正确)。你翻转了两次。

关于java - 来自 SQLite 数据库的 boolean 值作为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com