将db导入资产后,我成功地从中读取数据,并为我的活动中的四个按钮分配随机答案:
try{
mDbHelper.open(); //open db
Cursor c = mDbHelper.getTestData();
question.setText(c.getString(1));
List<String> labels = new ArrayList<String>();
labels.add(c.getString(2));
labels.add(c.getString(3));
labels.add(c.getString(4));
labels.add(c.getString(5));
Collections.shuffle(labels);
bOdgovor1.setText(labels.get(0));
bOdgovor2.setText(labels.get(1));
bOdgovor3.setText(labels.get(2));
bOdgovor4.setText(labels.get(3));
}
finally{ // close db
mDbHelper.close();
}
我的正确答案总是c.getString(2)(我的sqlite数据库中的列设置为ANSWER且ID = 2)。之后,我使用另一个问题为每个按钮设置onClickListener到realod活动:
bOdgovor1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
startActivity(getIntent());
}
});
如何检查答案是什么?
答案 0 :(得分:1)
将View
投放到Button
Button btn = (Button) v;
然后比较标签
if (btn.getText().equals(c.getString(2)) {
...
}
答案 1 :(得分:1)
更新了我的答案,请检查:
private class Answer {
public Answer(String opt, boolean correct) {
option = opt;
isCorrect = correct;
}
String option;
boolean isCorrect;
}
List<Answer> labels = new ArrayList<Answer>();
labels.add(new Answer(c.getString(2), true));
labels.add(new Answer(c.getString(3), false));
labels.add(new Answer(c.getString(4), false));
labels.add(new Answer(c.getString(5), false));
Collections.shuffle(labels);
bOdgovor1.setText(labels.get(0).option);
bOdgovor1.setTag(labels.get(0));
bOdgovor1.setOnClickListener(clickListener);
bOdgovor2.setText(labels.get(1).option);
bOdgovor2.setTag(labels.get(1));
bOdgovor2.setOnClickListener(clickListener);
bOdgovor3.setText(labels.get(2).option);
bOdgovor3.setTag(labels.get(2));
bOdgovor3.setOnClickListener(clickListener);
bOdgovor4.setText(labels.get(3).option);
bOdgovor4.setTag(labels.get(3));
bOdgovor4.setOnClickListener(clickListener);
所有按钮的OnClickListener:
final OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
Answer ans = (Answer) v.getTag();
if (ans.isCorrect) {
finish();
startActivity(getIntent());
}
}
};
答案 2 :(得分:0)
按钮b =(按钮)v; if(b.getText()。toString()。equals(c.getString(2))){
// answer is correct
}
不是很优雅,但应该这样做。