別のarraylistを含むためにarraylistを作成しようとしましたが、ループが最初のラウンドで親にサブアレイリストを追加した後、以前に追加された行を上書きし、2ラウンドの値を複製します。最終的に私は、カーソルの最後の行に値を持つ重複行を持つarraylistを取得します。うまくそれを明確にするために...代わりにこの別のArrayListを含むArrayList <ArrayList <String>>を埋め込む方法<String>
[Quote1, Location1]
[Quote2, Location2]
[Quote3, Location3]
[Quote4, Location4]
のようなものを返すので、それはここで
[Quote4, Location4]
[Quote4, Location4]
[Quote4, Location4]
[Quote4, Location4]
のようなものを返す私のコードです:
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;
}
それはサブにデータを代入しますカーソルオブジェクトからのArrayList助けてください!!!私はこれに多くの時間を費やしましたが、私のコードで何が間違っているのか理解できませんでした。皆さんを祝福してください!
囲みリスト「allVersesAL」に対して、同じリスト 'subAl'に多くの参照を追加しているようです。その代わりに、毎回新しいインナーリストを作成してください。 – khelwood
このコードのコメントを外す: '//subAL.clear();'はおそらくあなたの問題を解決するでしょう –
@ShaishavJoganiいいえ、そうではありません。彼が行う場合、リストにはカーソルの最後の行のデータしか含まれません。 –