2017-02-23 147 views
0

大家好,我只是一個初學者,所以請耐心等待) 我有一個ArrayList,它隨機挑選到我的cardView,如果我想要一個接一個地挑選它,我應該改變什麼?ArrayList隨機挑選

public static class Questions { 
     private String mQuestion; 
     private String mAnswer; 


     // statyczne tablice, na podstawie których zostaną uzupełnione obiekty artykułów 
     private static String[] sQuestions = {"1 Lorem ipsum dolor sit amet", 
       "2 Etiam sit", "3 Cras vel lorem", 
       "Cras suscipit, urna at aliquam rhoncus", 
       "Phasellus congue lacus eget neque", 
       "Phasellus pharetra nulla ac diam"}; 


     private static String[] sAnswers = {"1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam.", 
       "2 Quisque semper justo at risus. Donec venenatis, turpis vel hendrerit interdum, dui ligula ultricies purus, sed posuere libero dui id orci", 
       "3 Nam congue, pede vitae dapibus aliquet, elit magna vulputate arcu, vel tempus metus leo non est. Etiam sit amet lectus quis est congue mollis.", 
       "Phasellus congue lacus eget neque. Phasellus ornare, ante vitae consectetuer consequat, purus sapien ultricies dolor, et mollis pede metus eget nisi.", 
       "Praesent sodales velit quis augue. Cras suscipit, urna at aliquam rhoncus, urna quam viverra nisi, in interdum massa nibh nec erat."}; 

     public Questions() { 
      Random arry = new Random(); 

      mQuestion = sQuestions[arry.nextInt(sQuestions.length)]; 
      mAnswer = sAnswers[arry.nextInt(sAnswers.length)]; 
     } 

     public String getTitle() { 

      return mQuestion; 
     } 

     public String getContent() { 
      return mAnswer; 
     } 
    } 
+0

您正在使用隨機獲取int來訪問數組。顯然它會給隨機物品。 – Sanjeet

回答

0

這是你的意思嗎?

int a=0; 
while (a<arry.length) 
{ 
     mQuestion = sQuestions[a]; 
     mAnswer = sAnswers[a]; 
    a++; 
} 
1

這些行需要更改爲指向所需的索引。

mQuestion = sQuestions[arry.nextInt(sQuestions.length)]; 
mAnswer = sAnswers[arry.nextInt(sAnswers.length)]; 

例如,如果你想的問題和答案在5,那麼你需要寫

mQuestion = sQuestions[4]; 
mAnswer = sAnswers[4]; 

你如何獲得(在我的例子4)的數量是你的首選。一個for循環或一個while循環與增量將工作。從鍵盤輸入直接輸入數字也可以。

+1

您的意思是數組的索引4不是5. 5超出範圍。 –

+1

我打算提供一個例子。事實上,我沒有注意到他只有5個問題。我會修改我的答案。謝謝你的收穫! –

+1

你已經明白了。再次感謝。 –

0

要通過陣列爲了迭代,你可以做到以下幾點:

for (int i = 0; i < array.length; i++) { 
    String s = array[i]; 
    // Do what you want with your string s 
} 
1

你的陣列隨機返回,因爲你這樣寫的。 首先,來看看你的代碼

 Random arry = new Random(); 
     mQuestion = sQuestions[arry.nextInt(sQuestions.length)]; 
     mAnswer = sAnswers[arry.nextInt(sAnswers.length)]; 

你正在服用,因爲隨機函數的陣列的隨機元素。 你需要做的是用你想要的元素的索引替換索引部分(即這個[arry.nextInt(sQuestions.length)])。如果你想要第一個 - > 0,第二個 - > 1等等。不要越過arr.length-1,否則會拋出異常。

所有的一切,把你想要得到這樣的項目的指標,例如:

mQuestion = sQuestions[0]; 
    mAnswer = sAnswers[0]; 

的干將會給你「1個Lorem存有悲坐阿梅德」和「1個Lorem存有多莉坐在一個房間裏,這個房間裏有一個小小的房間,這個小房間裏有一個小小的房間。

創建計數器,創建您自己的邏輯,以便在調用函數時返回元素。

+0

謝謝,但我怎麼能做到這一點自動像1和1然後2和2,3和3等?像那樣的http:// imgur。com/a/2sRHX 類似循環 – lukaszgo3

+0

'getTitle(){if(counter == 5){0} {0} {0} {0} } temp = counter; counter ++; return array [counter]; }' 然後你爲另一個吸氣器創建一個更多的計數器。這將做到這一點。希望這有助於幫助 –

+0

'mQuestion = sQuestions [counter]; return mQuestion;' 而你使用我在前面的評論中爲你寫的計數器的邏輯。 它會工作 –

0

爲什麼不添加一個全局變量作爲數組的最大值?那麼每次調用問題時都可以迭代它。

if(questionPlace < max){ 
//assign values, questionPlace++; 
}else{ 
questionPlace = 0; 
//assign values 
}