私はタイトルが奇妙に聞こえるが、ArrayList
を再構築する必要があることを知っています。したがって、ArrayList項目を別の一時的なArrayList
に保存します。新しいArrayを作成するための一時的なArrayList
次に、再構築が必要なArrayListを消去し、再構築プロセスを開始します。私のコードは次のようになります:
ArrayList<ListData> tempList = new ArrayList<>();
for(int i = 0; i<data.size();i++){
String name = data.get(i).getName();
Log.e("name: ", name);
String number = String.valueOf(i);
Log.e("number: ", number);
String uri = data.get(i).getUri();
Log.e("uri: ", uri);
listData.setName(name);
listData.setNumber(number);
listData.setUri(uri);
tempList.add(listData);
}
data.clear();
for(int i=0; i<tempList.size(); i++){
String name = tempList.get(i).getName();
Log.e("getName: ", name);
String number = String.valueOf(i);
Log.e("getNumber: ", number);
String uri = tempList.get(i).getUri();
Log.e("getUri: ", uri);
listData.setName(name);
listData.setNumber(number);
listData.setUri(uri);
data.add(listData);
}
コードはエラーなしで動作しますが、結果は間違っています。ここではログの出力を示します。
< 12-22:08:36:55.281 5023から5023/com.example.enesakbulut.fitness E /名::ボニータ(フィーチャリングジ・バルビン) 12-22あなたは問題が何であるかを見るべきです08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/number :: 0 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/uri :: content:/ /com.android.providers.media.documents/document/audio%3A68 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/name:Que Va 12-22 08:36 :55.281 5023-5023/com.example.enesakbulut.fitness E/number :: 1 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/uri :: content:// com。 android.providers.media.documents/document/audio%3A67 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/name :: Que Va 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E /番号:: 2 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/uri :: content://com.android.providers.media.documents/document/audio%3A67 12- 22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/getName :: Que Va 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/getNumber :: 0 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/getUri :: content://com.android.providers.media.documents/document/audio%3A67 12-22 08: 36:55.281 5023-5023/com.example.enesakbulut.fitness E/getName :: Que Va 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/getNumber :: 1 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/getUri :: content://com.android.providers.media.documents/document/audio%3A67 12-22 08: 36:55.281 5023-5023/com.example.enesakbulut.fitness E/getName :: Que Va 12-22 08:36:55.281 5023-5023/com.example.enesakbulut.fitness E/getNumber :: 2 12- 22 08:36:55.281 5023から5023/com.example.enesakbulut.fitness E /のgetURI ::コンテンツ://com.android.providers.media.documents/document/audio%3A67
ご覧のとおりtempList(Arraylist)に正しい名前と番号を保存しますが、tempListからそれらを取得しようとすると、何度も何度も同じ項目が表示されます。同じ名前、同じ番号、同じURI。コードはとても単純ですが、私はこれが問題を引き起こすとは信じられません。
私があなたを助けてくれることを願っています! :)
data.clearにブレークポイントを設定し、アプリケーションをデバッグできますか。あなたのテンポラリアライリストに正しいデータが含まれているかどうか確認してください – Nero
これはわかりにくいですが、デバッガで問題を把握できるはずです。 – isaace
@Neroは、一時的なArrayListのサイズが3ではなく1であることを発見しました。しかし、なぜ私は理解できません...少なくとも、間違った出力の理由を発見しましたが、それを修正する... – Ketarr