通过单个对话框一次显示一个对象数组...而不是几个对话框

时间:2012-05-07 17:15:09

标签: android android-dialog

在我的应用程序中,我有一个存储在ArrayList中的问题列表,我想显示一个显示一个问题的对话框,然后在问题得到解答后继续下一个问题。我目前正在这样做的方式(迭代循环)一直没有工作,因为它只是将所有对话框一次性地叠加在一起,这导致了许多其他问题。我正在寻找的是一种仍然可以迭代问题的方法,但每次只更改对话框的布局,直到它完成列表中的每个问题。任何人都可以给我一个很好的指针,告诉我如何实现这一目标吗?

3 个答案:

答案 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 如果您包含当前正在执行的操作的代码示例,我们可以提供不那么模糊的答案。