因此,我对 android 非常熟悉,并且想制作一个类似琐事测验的应用程序,该应用程序将有 100 多个问题。问题页面都非常相似:它们将有一个 30 秒的计时器、一个问题和 4 个选项。一旦你得到一个正确的问题,你就会(随机)进入下一个问题。最好和最有效的方法是什么?
我是否 - 为每个创建 100 个 xml 页面布局和类(听起来不是最有效的方式)
或者有没有什么办法可以做到这一点,而无需为每个问题设置新的布局和类?
我在这里先向您的帮助表示感谢!
每个问题都有相同的布局。问题将位于包含问题、4 个答案选项和正确答案标记的类的数组中。通过随机函数加载元素 n。
如果问题页面相似,您应该为每个问题重复使用相同的布局。
您只需在布局中使用与每个问题对应的不同信息填充不同的 TextView。
如果您有一个对象“问题”和一个包含所有问题的问题数组(例如),您可以在 onCreate 部分选择一个随机问题并使用问题参数填充文本视图。
我不确定你为什么认为你需要 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.
}
}
将问题放入 string[] 数组,然后将答案放入带有相关索引的 answer[] 数组中,例如: question[1] 它的答案将是 answrs[4]、[5]、[6] 和 [7] 或您可以有 4 个答案数组,每个多项选择都位于问题的同一索引中。然后使用随机库选择随机问题并与其答案相关......
让他们都拥有相同的布局,只要问题发生变化..将文本设置为所选问题......等等......