2012-04-09 10 views
0

Bisher konnte ich den Inhalt einer Zeile (4 Spalten) in bestimmten Textansichten anzeigen. Aber ich möchte sie in zufälliger Reihenfolge anzeigen. Ich benutze dieseZufälliger Satz von Spalten aus einer Datenbank

String answer1 = cur.getString(cur.getColumnIndex("ANSWER1")); 

und auf die Änderung Inhalt klicken, aber die Daten immer auf Spalte ANSWER1 in der ersten Textview zeigt. Was kann ich tun, um die 4 Spalten zufällig zu den 4 Textansichten anzuzeigen? ZB Spalte 1 zu Textansicht 3, Spalte 2 zu Textansicht 1 usw. Ich möchte jedes Mal verschiedene Daten auf Textansicht 1.
---- Bearbeiten ----
Lets sagen, ich habe eine weitere Spalte, die die Nummer der Spalte idicates die richtige Antwort ist.Eg wenn die richtige Antwort in der Spalte "Answer3" ist, sind die Daten in der Spalte "CorrAnswer" 3. Ich ändere die Textviews oben zu Buttons. Jeder Button sendet eine ganze Zahl. Wie kann ich die korrekte Antwort überprüfen, wenn die Texte auf den Tasten gemischt werden?

+0

die Tatsache, Sie zu erhalten Zufällige Spalten weisen stark darauf hin, dass Ihr Schema nicht normalisiert ist. https://en.wikipedia.org/wiki/Database_normalization –

+0

Lassen Sie mich genauer sein. Ich möchte Daten aus jeder Spalte in einer nicht vordefinierten Reihenfolge in den Textansichten anzeigen. Nichts mit Normalisierung zu tun. – dothedos

Antwort

1

Ich würde alle Ihre Antworten zu einer ArrayList hinzufügen und dann eine zufällige verwenden, um zufällige Antworten zu entfernen. Der folgende Java (Konsole) Code zeigt, wie Sie könnten dies tun:

ArrayList<String> lstAnswers = new ArrayList<String>(); 
    lstAnswers.add("Answer 1"); 
    lstAnswers.add("Answer 2"); 
    lstAnswers.add("Answer 3"); 
    lstAnswers.add("Answer 4"); 

    Random random = new Random(); 


    while (lstAnswers.size() > 0) { 
     int index = random.nextInt(lstAnswers.size()); 
     String randomAnswer = lstAnswers.remove(index); 
     System.out.println(randomAnswer); 
    } 

Wie in Ihrer Bearbeitung angefordert, die nach dem Text der Textansicht würden zuweisen: will

ArrayList<String> lstAnswers = new ArrayList<String>(); 
    lstAnswers.add("Answer 1"); 
    lstAnswers.add("Answer 2"); 
    lstAnswers.add("Answer 3"); 
    lstAnswers.add("Answer 4"); 

    Random random = new Random(); 

    int[] textViews = new int[] { R.id.txt1, R.id.txt2, R.id.txt3, R.id.txt4 }; 
    int textViewIndex = 0; 

    while (lstAnswers.size() > 0) { 
     int index = random.nextInt(lstAnswers.size()); 
     String randomAnswer = lstAnswers.remove(index); 

     ((TextView)findViewByid(textViews[textViewIndex])).setText(randomAnswer); 

     ++textViewIndex; 
    } 
+0

Ich möchte die Antworten nicht entfernen, aber Ihre Antwort könnte funktionieren. Wenn ich in einem bestimmten Index des Arraylists stechen möchte und es einem textview zeigen, wie ich das tun könnte? – dothedos

+0

Die Entfernung entfernt nur die Zeichenfolge aus der temporären Arraylist: Sie werden nicht aus der Datenbank entfernt –

+0

Um die Zeichenfolge zu einer Textansicht hinzuzufügen, innerhalb der While-Schleife Aufruf textView.set Text (zufällige Antwort). Wenn es jedoch bei jeder Iteration eine andere Textansicht geben muss, müssen Sie einen Verweis beibehalten, für den noch keine Textansichten festgelegt wurden. –

Verwandte Themen