Ich habe versucht, eine Arraylist zu füllen, um eine andere Arraylist zu füllen, aber nachdem die Schleife die Subarraylist der Eltern in der ersten Runde, in der nächsten Runde überschreibt die zuvor hinzugefügte Zeile und dupliziert den Wert der 2. Runde und so weiter; So bekomme ich endlich eine Arraylist mit doppelten Zeilen, die alle die letzte Zeile im Cursor haben. Um zu klären, es gut ... stattWie man eine ArrayList <ArrayList <String>>, die eine andere ArrayList enthält <String>
[Quote1, Location1]
[Quote2, Location2]
[Quote3, Location3]
[Quote4, Location4]
etwas wie diese Rückkehr es gibt so etwas wie
[Quote4, Location4]
[Quote4, Location4]
[Quote4, Location4]
[Quote4, Location4]
Hier ist mein Code:
public ArrayList<ArrayList<String>> getAllVerses() {
ArrayList<ArrayList<String>> allVersesAL = new ArrayList<ArrayList<String>>();
ArrayList<String> subAL = new ArrayList<>();
Cursor allVerse = getAllQuote(); //It's an outsider method
allVerse.moveToFirst();
do {
//subAL.clear();
subAL.add(allVerse.getString(allVerse.getColumnIndex(VERSE)));
subAL.add(allVerse.getString(allVerse.getColumnIndex(LOC_AUTH)));
Log.d("Content of subAL", subAL + "");
allVersesAL.add(subAL);
} while (allVerse.moveToNext());
for (List<String> li : allVersesAL) {
for (String s : li) {
Log.d("getAllVerses", "Inside the second for loop...");
Log.d("Testing arraylist...", s + " : ");
}
}
return allVersesAL;
}
es die Daten an die Unter zuweist ArrayList von einem Cursor-Objekt. Bitte helfen !!! Ich habe viel Zeit damit verbracht, konnte aber nicht herausfinden, was mit meinem Code nicht stimmt. Segne euch alle!
Sie scheinen viele Referenzen auf die gleiche Liste 'subAl' zu Ihrer einschließenden Liste' allVersesAL' hinzuzufügen. Erstellen Sie stattdessen jedes Mal eine neue innere Liste. – khelwood
Kommentieren Sie diesen Code: '//subAL.clear();' wird wahrscheinlich Ihr Problem gelöst –
@ShaishavJogani Nein, wird es nicht. Wenn er das tut, wird die Liste nur Daten für die letzte Zeile im Cursor enthalten. –