2012-05-07 65 views
1

在我的應用程序中,我有一個存儲在ArrayList中的問題列表,我想顯示一個顯示一個問題的對話框,然後在問題得到解答後繼續下一個問題。我現在正在做這件事的方式(遍歷一個循環)一直沒有奏效,因爲它只是將所有的對話框一次層疊在一起,這會導致一系列其他問題。我正在尋找的是一種仍然遍歷問題的方法,但每次只更改對話框的佈局,直到完成列表中的每個問題。任何人都可以給我一個很好的指導,讓我知道如何做到這一點?通過單個對話框一次顯示一個對象數組...而不是幾個對話框

+0

爲什麼要使用對話框?您可以創建一個視圖並更改其內容。 – David

+0

我使用對話框,因爲當前視圖與正在回答的問題相關,並且在問題部分完成後執行其他操作。 – RyanInBinary

回答

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 
    } 
} 
+0

我正在努力尋找類似的東西。這正是我需要的,謝謝! – RyanInBinary

0

如果你要使用的正面,中性和負面鈕釦;那麼你可能會遇到多個對話的問題。嘗試使用自己的TextView,ListViews和Button定義自定義佈局。你可以像普通佈局一樣實現監聽器和其他一切。然後通過AlertDialog.Builder.setView()將您的自定義佈局傳遞給對話框。

PS如果您包含您目前正在做的事情的代碼示例,我們可以提供不太模糊的答案。

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;