0

データベースをアセットにインポートした後、それを正常に読み取り、アクティビティ内の 4 つのボタンにランダムな回答を割り当てます。

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());

            }
        });

正解を確認する方法は?

4

3 に答える 3

1

ViewにキャストButton

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 に答える