1

質問のゲームであるアプリを開発しています。毎回異なるボタンに各質問の答えを表示することができましたが、正しい答えを確認するのに苦労しています。私のアプローチは次のとおりです。データベースに追加の列を作成しました。ここで、正解が(1、2、3、または4)である列を示します。このコードを使用して、さまざまなボタンに回答を表示します。

cur = dbHelper.getRandomQuestion();
    String corrans = cur.getString(cur.getColumnIndex("CorrectAnswer"));
    a = Integer.parseInt(corrans);
    String question = cur.getString(cur.getColumnIndex("QUESTIONS"));
    String answer0 = cur.getString(cur.getColumnIndex("ANSWER1"));
    String answer1 = cur.getString(cur.getColumnIndex("ANSWER2"));
    String answer2 = cur.getString(cur.getColumnIndex("ANSWER3"));
    String answer3 = cur.getString(cur.getColumnIndex("ANSWER4"));
    txtQuest.setText(question);

    ArrayList<String> lstAnswers = new ArrayList<String>();
    lstAnswers.add(answer0);
    lstAnswers.add(answer1);
    lstAnswers.add(answer2);
    lstAnswers.add(answer3);

     score.setText("Your score is " + b +","+ a);

    Random random = new Random();

    int[] textViews = new int[] { R.id.button1, R.id.button2, R.id.button3, R.id.button4 };
    int textViewIndex = 0;

    while (lstAnswers.size() > 0)   {
    int index = random.nextInt(lstAnswers.size());
    if(a == index){ b = index;}
    else{}
    String randomAnswer = lstAnswers.remove(index);
    ((TextView)findViewById(textViews[textViewIndex])).setText(randomAnswer);
    ++textViewIndex;
                                    }

各ボタンを呼び出してaとbの値を比較し、それに応じて動作します。しかし、それは機能していないようです。理由はわかりますが、わかりません。助けが必要です。

4

3 に答える 3

2

回答配列をシャッフルしてから回答を表示するために使用Collections.shuffle(list)します。回答が正しいボタンにタグを「右」として設定し、後でタグ値を比較して、正しいか間違っているかを示します。

編集:以下のものは単なる概要です

 Here im displaying answers in buttons....

    List<Integer> intList = new ArrayList<Integer>(Arrays.asList(0,1,2,3));
        Collections.shuffle(intList);

       Log.d("ERR","List after shuffling: " + intList);  
       // below answers will be assiagned randomly to buttons...
        btn_cmpTagline[intList.get(0)].setText(answr1);
        btn_cmpTagline[intList.get(0)].setTag("right");
        btn_cmpTagline[intList.get(1)].setText(answr2);
        btn_cmpTagline[intList.get(1)].setTag("wrong");
        btn_cmpTagline[intList.get(2)].setText(answr3);
        btn_cmpTagline[intList.get(2)].setTag("wrong");
        btn_cmpTagline[intList.get(3)].setText(answr4);
        btn_cmpTagline[intList.get(3)].setTag("wrong");

//クリック時

   @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.btn_tag1:
            Log.d("ERR", v.getTag().toString());
            if(v.getTag().toString().equalsIgnoreCase("right")){
                //this button has right answer .. do anything 
            }

            break;
        case R.id.btn_tag2:
            Log.d("ERR", v.getTag().toString());
            if(v.getTag().toString().equalsIgnoreCase("right")){
                //this button has right answer .. do anything 
            }

            break;
        case R.id.btn_tag3:
            Log.d("ERR", v.getTag().toString());
            if(v.getTag().toString().equalsIgnoreCase("right")){
                //this button has right answer .. do anything 
            }

                    --
                    --
      }
于 2012-04-10T10:04:32.703 に答える
0

リストからアイテムを削除すると、正解のインデックスが変更されるため、正解の場所を更新する必要があります。

于 2012-04-10T09:52:45.003 に答える
0

インデックスの代わりに正しい答えの値を取得できます。次に、ボタンに回答を追加するときに、それが正しい回答と同じであるかどうかを確認し、新しいインデックスを保持できます。

于 2012-04-10T11:15:02.753 に答える