0

因此,我对 android 非常熟悉,并且想制作一个类似琐事测验的应用程序,该应用程序将有 100 多个问题。问题页面都非常相似:它们将有一个 30 秒的计时器、一个问题和 4 个选项。一旦你得到一个正确的问题,你就会(随机)进入下一个问题。最好和最有效的方法是什么?

我是否 - 为每个创建 100 个 xml 页面布局和类(听起来不是最有效的方式)

或者有没有什么办法可以做到这一点,而无需为每个问题设置新的布局和类?

我在这里先向您的帮助表示感谢!

4

4 回答 4

3

每个问题都有相同的布局。问题将位于包含问题、4 个答案选项和正确答案标记的类的数组中。通过随机函数加载元素 n。

于 2013-11-06T17:55:17.907 回答
1

如果问题页面相似,您应该为每个问题重复使用相同的布局。

您只需在布局中使用与每个问题对应的不同信息填充不同的 TextView。

如果您有一个对象“问题”和一个包含所有问题的问题数组(例如),您可以在 onCreate 部分选择一个随机问题并使用问题参数填充文本视图。

于 2013-11-06T17:57:50.573 回答
1

我不确定你为什么认为你需要 100 个 xml 页面布局,因为它们都是相同的(或非常相似的)。您的问题页面只需要一个 xml 布局,其中包括一个用于问题的文本字段,以及一个包含 4 个按钮的单选(或类似)部分用于您的答案。

然后,我将创建一个包含您的问题和答案的 Question 类。前任。

public class Question {
    private String _question;
    private int _correctAnswerIndex;
    private Object[] _answers;

    public Question(String question, Object answers[], int correctAnswerIndex) {
        _question = question;
        _correctAnswerIndex = correctAnswerIndex;
        _answers = answers;
    }

    // Plus your getters and setters
}

然后在显示问题的活动(或片段)中,您可以将内容视图设置为布局,检索适当的字段并相应地填充它们。

前任。

public class QuestionActivity extends Activity {
    private ArrayList<Question> _questions;
    private int _currentQuestionIndex;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.question_layout);

        init();
    }

    private void init() {
        //Add your questions...

        TextView questionField = (TextView)findViewById(R.id.question_layout_question_field);
        questionField.setText(_questions.get(_currentQuestionIndex).getQuestion());

        //Get and set your other fields.
    }
}
于 2013-11-06T17:59:13.750 回答
1

将问题放入 string[] 数组,然后将答案放入带有相关索引的 answer[] 数组中,例如: question[1] 它的答案将是 answrs[4]、[5]、[6] 和 [7] 或您可以有 4 个答案数组,每个多项选择都位于问题的同一索引中。然后使用随机库选择随机问题并与其答案相关......

让他们都拥有相同的布局,只要问题发生变化..将文本设置为所选问题......等等......

于 2013-11-06T18:02:33.113 回答