0

将数据库导入资产后,我成功地从中读取,并为我的活动中的四个按钮分配随机答案:

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 db 中有一个列设置为 ANSWER 并且它的 ID=2)。之后,我将每个按钮的 onClickListener 设置为用另一个问题重新激活活动:

bOdgovor1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                finish();
                startActivity(getIntent());

            }
        });

如何检查什么是正确答案?

4

3 回答 3

1

投你ViewButton

Button btn = (Button) v;

然后比较标签

if (btn.getText().equals(c.getString(2)) {
  ...
}
于 2013-02-28T13:47:36.173 回答
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());
        }
    }
};
于 2013-02-28T13:51:06.317 回答
0

按钮 b = (按钮)v; if (b.getText().toString().equals(c.getString(2))){

    // answer is correct
}

不是很优雅,但应该这样做。

于 2013-02-28T13:47:05.760 回答