在我的应用程序中,我有一个存储在ArrayList中的问题列表,我想显示一个显示一个问题的对话框,然后在问题得到解答后继续下一个问题。我目前正在这样做的方式(迭代循环)一直没有工作,因为它只是将所有对话框一次性地叠加在一起,这导致了许多其他问题。我正在寻找的是一种仍然可以迭代问题的方法,但每次只更改对话框的布局,直到它完成列表中的每个问题。任何人都可以给我一个很好的指针,告诉我如何实现这一目标吗?
答案 0 :(得分:1)
您可以创建一个将标题和消息作为参数并显示对话框的函数。
showDialog(String title, String message){ // Show dialog code here}
在该对话框的回答按钮的监听器中调用另一个迭代arrayList的函数(showQuestion(currentQuestion)),直到它结束
int currentQuestion=0;
ArrayList<QuestionObject> questionList;
showQuestion(int i){
if(i<questionList.size()){
showDialog(questionList.get(i).getTitle,questionList.get(i).getMessage);
currentQuestion++;
}else{
//quiz is over
}
}
答案 1 :(得分:1)
我认为你的意思是你只想改变1个单一的布局(在XML中创建,即main.xml)。为此,请确保您正在处理的类指向该布局。从那里开始(假设您在用户提交答案时使用了事件监听器),您可以按以下方式更改操作:
TextView txt = (TextView) findViewById(R.id.textView); // references the txt XML element
并在您的事件监听器中,如果答案是正确的,则更改(我是一个最初设置为0的全局变量)。
if(i<arrayList.size()){
txt.setText(arrayList.get(++i));
}else{
txt.setText("You Finished");
}
从那里,在else语句中,您可以更改arrayLists并将i重置为0;
答案 2 :(得分:0)
如果您尝试使用正面,中性和负面按钮;那么你可能会遇到多个对话框的问题。尝试使用自己的TextViews,ListViews和Buttons定义自定义布局。您可以像常规布局一样实现侦听器和其他所有内容。然后通过AlertDialog.Builder.setView()
将您的自定义布局传递给对话框。
PS 如果您包含当前正在执行的操作的代码示例,我们可以提供不那么模糊的答案。