1

在我的应用程序中,我有一个存储在 ArrayList 中的问题列表,我想显示一个对话框,显示一个问题,然后在回答完问题后继续下一个问题。我目前正在这样做的方式(通过循环迭代)并没有奏效,因为它只是一次将所有对话框叠加在一起,这会导致许多其他问题。我正在寻找的是一种仍然遍历问题的方法,但每次只需更改对话框的布局,直到它完成列表中的每个问题。任何人都可以给我一个很好的指导如何让这件事发生吗?

4

3 回答 3

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;

于 2012-05-07T17:35:29.323 回答
1

您可以创建一个函数,将标题和消息作为参数并显示一个对话框。

showDialog(String title, String message){ // Show dialog code here}

在该对话框的应答按钮的侦听器中调用另一个函数 (showQuestion(currentQuestion)) 迭代 arrayList 直到它结束

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
  }
}
于 2012-05-07T17:25:28.097 回答
0

如果您尝试使用正面、中性和负面按钮;那么您可能会遇到多个对话框的问题。尝试使用您自己的 TextView、ListView 和 Button 定义自定义布局。您可以像常规布局一样实现侦听器和其他所有内容。然后只需将您的自定义布局通过AlertDialog.Builder.setView().

PS如果您包含您当前正在执行的操作的代码示例,我们可以提供不那么模糊的答案。

于 2012-05-07T17:28:28.600 回答