2017-02-23 2 views
0

jeder, ich bin nur ein Anfänger also bitte geduldig sein;) Ich habe eine ArrayList und es ist nach dem Zufallsprinzip ausgewählt, um meine cardView, was soll ich ändern, wenn ich eins nach dem anderen in Reihenfolge wählen?ArrayList wählt zufällig

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

Sie verwenden Random, um den Int für den Zugriff auf das Array zu erhalten. Offensichtlich wird es zufällige Gegenstände geben. – Sanjeet

Antwort

0

Meinst du das?

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

Diese Zeilen müssen geändert werden, um auf die gewünschten Indizes zu zeigen.

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

Zum Beispiel, wenn Sie die Frage und Antwort bei 5 dann wollte würden Sie

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

schreiben müssen, wie Sie die Nummer (4 in meinem Beispiel) erhalten, ist Ihre Wahl. Eine for-Schleife oder eine while-Schleife mit Inkrementierung funktioniert. Das Übergeben von direkten Zahlen von der Tastatureingabe würde ebenfalls funktionieren.

+1

Sie meinen Index 4 des Arrays nicht 5. 5 ist außerhalb der Grenzen. –

+1

Ich wollte ein Beispiel geben. Tatsächlich habe ich nicht bemerkt, dass er nur 5 Fragen insgesamt hatte. Ich werde meine Antwort ändern. Danke für den Fang! –

+1

Sie haben es schon verstanden. Danke noch einmal. –

0

durch eine Anordnung, um iterieren Sie folgendes tun:

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

Ihr Array zurückgibt zufällig, weil Sie es auf diese Weise geschrieben. Zunächst werfen Sie einen Blick auf den Code

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

Sie sind wegen der Zufallsfunktion ein zufälliges Element des Arrays nehmen. Was Sie tun müssen, ist das Ersetzen des Indexteils aka dieses [arry.nextInt(sQuestions.length)] mit dem Index des Elements, das Sie wollen. Wenn Sie das erste wollen -> 0, 2 -> 1 und so weiter. Gehen Sie nicht über arr.length-1 oder es wird eine Ausnahme ausgelöst.

Alles in allem stellen die Indizes der Elemente, die Sie wie diese erhalten möchten, zum Beispiel .:

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

Die Getter werden Sie und „1 Lorem ipsum "1 Lorem ipsum dolor sit amet" geben 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. "

Erstellen Sie Zähler, erstellen Sie Ihre eigene Logik für das Zurückgeben von Elementen, wenn die Funktionen aufgerufen werden.

+0

Danke aber wie kann ich das automatisch machen wie 1 und 1 dann 2 und 2, 3 und 3 etc.? Smth wie das http: // imgur.com/a/2sRHX so etwas wie eine Schleife – lukaszgo3

+0

'getTitle() { if (counter == 5) { counter = 0; } temp = Zähler; Zähler ++; Rückgabearray [Zähler]; } ' Und Sie erstellen einen weiteren Zähler für den anderen Getter. Das wird es tun. Hoffe, das hilft –

+0

'mQuestion = sQuestions [counter]; zurück mQuestion; ' Und Sie verwenden die Logik, die ich Ihnen im vorherigen Kommentar für den Zähler schrieb. Es wird funktionieren –

0

Warum fügen Sie keine globale Variable als Maximalwert des Arrays hinzu? dann können Sie es jedes Mal wiederholen, wenn Fragen aufgerufen werden.

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