2017-12-22 12 views
-1

Ich weiß, der Titel klingt seltsam, aber ich muss eine ArrayList neu erstellen. Daher speichere ich die ArrayList Items in einem anderen temporären ArrayList.Temporäre ArrayList zum Erstellen einer neuen

Dann lösche ich die ArrayList, die neu aufgebaut werden muss, und dann beginnt der Wiederaufbauprozess. Mein Code sieht wie folgt aus:

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); 
         } 

Der Code funktioniert ohne Fehler, aber das Ergebnis ist falsch, hier die Log-Ausgaben sind. Sie sollten sehen, was das Problem ist:

< 12-22 08: 36: 55,281 5023-5023/com.example.enesakbulut.fitness E/name :: Bonita (feat. J Balvin) 12-22 08: 36: 55.281 5023-5023/com.beispiel.nesakbulut.fitness E/nummer :: 0 12-22 08: 36: 55,281 5023-5023/com.beispiel.nesakbulut.fitness E/uri :: inhalt://com.android.providers.media.documents/document/audio%3A68 12-22 08: 36: 55,281 5023-5023/com.example.enesakbulut.fitness E/name :: Que Va 22.12 08.36 : 55.281 5023-5023/com.example.enesakbulut.fitness E/number :: 1 12-22 08: 36: 55.281 5023-5023/com.beispiel.nesakbulut.fitness E/uri :: content: // com. android.providers.media.documents/document/audio% 3A67 August 12-22: 36: 55,281 5023-5023/com.example.enesakbulut.fitness E/name :: Que Va August 12-22: 36: 55,281 5023-5023/com.example.enesakbulut.fitness E/Nummer :: 2 August 12-22: 36: 55,281 5023-5023/com.example.enesakbulut.fitness E/uri :: Inhalt: //com.android.providers.media.documents/document/audio%3A67 12- 22 08: 36: 55.281 5023-5023/com.beispiel.nesakbulut.fitness E/getName :: Que Va 12-22 08: 36: 55.281 5023-5023/com.beispiel.nesakbulut.fitness E/getNumber :: 0 August 12-22: 36: 55,281 5023-5023/com.example.enesakbulut.fitness E/getUri :: Inhalt: //com.android.providers.media.documents/document/audio%3A67 12-22 August: 36: 55.281 5023-5023/com.beispiel.nesakbulut.fitness E/getName :: Que Va 12-22 08: 36: 55,281 5023-5023/com.beispiel.neseballut.fitness E/getNumber :: 1 12-22 08: 36: 55.281 5023-5023/com.beispiel.nesakbulut.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 August 12-22: 36: 55,281 5023-5023/com.example.enesakbulut.fitness E/getNumber :: 2 12- 22 08: 36: 55,281 5.023-5.023/com.example.enesakbulut.fitness E/getUri :: Inhalt: //com.android.providers.media.documents/document/audio%3A67

Wie Sie sehen Es speichert die verschiedenen Namen und Nummern in der richtigen Weise zu der TempList (Arraylist), aber wenn ich versuche, sie von der TempList zu bekommen, bekomme ich immer und immer wieder den gleichen Gegenstand. Gleicher Name, gleiche Nummer und gleiche URL. Der Code ist so einfach, ich kann einfach nicht glauben, dass dies Probleme verursacht.

Ich hoffe, Sie können mir helfen! :)

+0

Sie können einen Breakpoint bei data.clear setzen und Ihre Anwendung debuggen. Überprüfen Sie, ob Ihre Temp-Arraylist die richtigen Daten enthält – Nero

+0

Das wäre schwer für uns herauszufinden, aber Sie sollten in der Lage sein, das Problem mit einem Debugger zu lösen. – isaace

+0

@Nero hat gerade herausgefunden, dass die Größe der temporären ArrayList 1 statt 3 ist. Aber ich verstehe nicht warum ... Zumindest habe ich den Grund für die falsche Ausgabe herausgefunden, aber ich weiß wirklich nicht wie etwas reparieren... – Ketarr

Antwort

0

Sie erstellen keine neuen Instanzen von ListData, die zu einem neuen Array hinzugefügt werden sollen. Wenn ListData Ihre Pojo-Klasse ist, sollte dieser Code funktionieren.

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 listData = new ListData(); 
           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 listData = new ListData(); 
           listData.setName(name); 
           listData.setNumber(number); 
           listData.setUri(uri); 
           data.add(listData); 
         } 
+0

Sie müssen ein neues Objekt zu Ihrem Array mit neuen Werten hinzufügen – Rainmaker

+0

Vielen Dank :) Es behoben das "Problem" – Ketarr

Verwandte Themen