2017-02-23 144 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 
}