3

我正在开发一个基于测验的应用程序。测验包含 1 个问题和 4 个多项选择答案。

当用户选择 4 个选项中的任何一个时,如果它是正确答案,则应显示“您的答案是正确的”之类的内容,否则应与正确答案一起显示“您的答案错误”。

还有2个按钮(下一个和后退),一个用于下一个问题,另一个用于返回。

有人可以告诉我如何编写返回上一个问题的代码吗?

我做了这样的事情:

 private void getShuffledArray() 
    {
        // TODO Auto-generated method stub
        for (int i = 1; i <= SIZE; i++) 
        {
            quizIndexList.add(i);

        }
        Collections.shuffle(quizIndexList);
        Log.d("ERR", "List A shuffling" + quizIndexList);

    }

    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.button1:
            Log.d("ERR", v.getTag().toString());
            if (v.getTag().toString().equalsIgnoreCase("right")) {
                displayAnswer();


            }

            break;
        case R.id.button2:
            Log.d("ERR", v.getTag().toString());
            if (v.getTag().toString().equalsIgnoreCase("right")) {
                displayAnswer();
            }
            break;

        case R.id.button3:
            Log.d("ERR", v.getTag().toString());
            if (v.getTag().toString().equalsIgnoreCase("right")) {
                displayAnswer();
            }
            break;

        case R.id.button4:
            Log.d("ERR", v.getTag().toString());
            if (v.getTag().toString().equalsIgnoreCase("right")) {
                displayAnswer();
            }
            break;

        case R.id.btn_next:
//          lyt_ans.setVisibility(View.GONE);
//          lyt_quest.setVisibility(View.VISIBLE);
            counter += 1;
            if (counter >= SIZE) {
                Collections.shuffle(quizIndexList);
                counter = 0;
            }
            getInfoFromDB(quizIndexList.get(counter));
            reLoad();
            break;

        case R.id.btn_bck:
             btn_next.setOnClickListener(new OnClickListener() 
               {

                public void onClick(View v) 
                {
                    // TODO Auto-generated method stub

                    finish();
                }
               });

        }

}

任何帮助都是可观的,并在此先感谢您。

4

3 回答 3

3

@Rithesh - 没有得到你的代码,但简单的逻辑如下你需要什么1)问题数组2)答案Arraylist(或者说二维数组)类似ArrayList<ArrayList<String>> 3)每个问题的答案索引(它应该与问题索引4匹配)一个带有文本视图(显示问题)的视图,RadioGroup 包含 4 个单选按钮,因此它一次只能选择一个 5)下一个和上一个两个按钮 6)主要内容添加setOnCheckedChangeListener到您的单选组,只有当用户选择任何答案然后检查哪个单选按钮被选中时才会触发(对于这个单选按钮的设置标签到它的位置)所以假设问题号是 2 并且单选检查位置是 3 然后只需检查您的答案数组,如果答案匹配,则可以显示 toast,如果不匹配,则从 Answers arraylist 中查找写入答案并在 toast 或警报中显示。7)现在,当您单击下一个按钮时,将文本视图的文本更改为下一个问题,将单选按钮的文本更改为下一组答案,反之亦然,以单击上一个按钮

这是合乎逻辑的,无法为您提供代码

设置选项的代码

RadioButton option_rdb1 = (RadioButton) findViewById(R.id.option_rdb1);
setOptions(0);

// if you used ArrayList<ArrayList<String>> optionslist
public void setOptions(int index){
if((index-1) <= optionsList.size()){
    ArrayList<String> temp = optionslist.get(index);
    options_rdb1.setText(temp.get(0).toString();
    options_rdb1.setText(temp.get(0).toString();
    options_rdb1.setText(temp.get(0).toString();
    options_rdb1.setText(temp.get(0).toString();
  }
}

只需在下一个前面调用 setOptions 并带有问题索引。我用作index-1arraylist以0开头所以这取决于你如何使用索引。这样您就可以设置第一个选项 同样在您将在下一个按钮上调用的函数中单击使用上面的代码行设置下一个

于 2012-04-05T10:00:20.030 回答
1

在按钮btn_next的 onclick 中放置一个 int prev

现在在更换柜台之前..

prev=counter<--- store the counter value..
counter += 1;
        if (counter >= SIZE) {
            Collections.shuffle(quizIndexList);
            counter = 0;}

并在btn_bck的 onclick 中得到这样的 prev 问题..

     getInfoFromDB(quizIndexList.get(prev));
    reLoad();
于 2012-04-05T09:51:41.077 回答
0
  1. 您只需要洗牌一次(例如在 oncreate 中)并按 next 或 back 您应该增加或减少问题数组的索引
于 2012-04-05T09:36:17.647 回答