Android Probleme mit ArrayList

bruce85

Bekanntes Mitglied
Hallo,
ich habe ein Problem mit ArrayList und zwar, möchte ich die Arrays von tempImages zu
einem anderen ArrayList hinzufügen, diese sich hier befindet:
Java:
AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages()
Das klappt auch, nur sobald die Arrays in der For Schleife hinzugefügt werden, wird auch beim ArrayList tempImages jeweils um 1 erhöht und somit habe ich dann eine Endlos Schleife, und meine App stürzt dann ab.

So versuche ich die Arrays einer anderen Array Liste hinzuzufügen:
Java:
private ArrayList<ArticleImageItem> tempImages = new ArrayList<>();
.........................
if (tempImages.size() > 0) {
    for (int i=0; i<tempImages.size(); i++) {
        AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages().add(tempImages.get(i));
    }
}

Hier sind mal die Java-Klassen von mir:
Java:
public class AppConst {
    public static List<ArticleItem> ARTICLE_ITEM_LIST = new ArrayList<ArticleItem>();
    public static List<ArticleImageItem> ARTICLE_IMAGE_ITEM_LIST = new ArrayList<ArticleImageItem>();
    public static int ARTICLE_ITEM_SELECTED = 0;
}


Java:
public class ArticleImageItem {
    ....................
    private Uri fileUri;

    public ArticleImageItem() {
    }

    public Uri getFileUri() {
        return fileUri;
    }

    public void setFileUri(Uri fileUri) {
        this.fileUri = fileUri;
    }

    ....................
}

Java:
public class ArticleItem {
    ....................
    private ArrayList<ArticleImageItem> images = new ArrayList<>();

    public ArticleItem() {
    }

    public ArrayList<ArticleImageItem> getImages() {
        return images;
    }

    public void setImages(ArrayList<ArticleImageItem> images) {
        this.images = images;
    }

    ....................
}

Wo könnte das Problem denn liegen?

Ich bedanke mich schon mal im Voraus.

Gruss
 

bruce85

Bekanntes Mitglied
Hallo noch mal,
Sorry, der fehler lag woanders, es wurde in einer anderen Klasse bereits einmal hinzugefügt.
Nun funktioniert es.

Edit: Das wars doch nicht, also falls mir jemand helfen könnte, wäre ich sehr dankbar dafür.

Gruss
 

bruce85

Bekanntes Mitglied
Danke Dir.
Ich hab mir was in der Console ausgeben lassen, wenn das hier ausgeführt wird:
Java:
for (int i=0; i<tempImages.size(); i++) {
    System.out.println("Title: "+tempImages.get(i).getTitle());
    AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages().add(tempImages.get(i));
}

Obwohl z.B. nur 2 Einträge drin sind, bekommt ich aufeinmal unendlich viele ausgaben und die App hängt dann und stürzt nach einer Weile ab.
Wenn ich diese Zeile zum Test auskommentiere:
Java:
AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages().add(tempImages.get(i));
dann erhalte ich nur 2 ausgaben.
Wie kann das denn sein, wenn ich die 2 Einträge zum ArrayList hinzufügen möchte, das die ArrayList tempImages auch immer mehr werden?
tempImages.size() benutze ich ja in der For Schleife also i<tempImages, also wenn tempImages auch mehr wird bei jedem Durchlauf, dann kann die Schleife ja nie beendet werden.
Keine ahnung wieso tempImages sich auch vermehrt.

Diese möglichkeit:
Java:
addAll(Collection<? extends E> c)
habe ich auch getestet, leider wird immer die ArrayList, diese ich der anderen ArrayList hinzufüge, auch vermehrt.

Edit: Ich werd das noch mal testen und sage dann bescheid.

Vielen Dank erst mal.

Gruss
 

bruce85

Bekanntes Mitglied
Nachdem ich das hier ausgeführt habe:
Java:
AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages().addAll(tempImages);
wird tempImages immer verdoppelt obwohl ich diese ja in eine andere ArrayList hinzufügen möchte.

Mir wäre es lieber, das in einer For-Schleife zu machen:
Java:
for (int i=0; i<tempImages.size(); i++) {
    System.out.println("Title: "+tempImages.get(i).getTitle());
    AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages().add(tempImages.get(i));
}
aber wie gesagt, tempImages wird dadurch auch immer mehr, obwohl tempImages sich nicht verändern sollte.

Nach einiger Zeit, wenn die Schleife nicht beendet wird, bekomme ich eine Fehlermeldung und die App stürzt ab:
Java:
java.lang.OutOfMemoryError: Failed to allocate a 83070912 byte allocation with 25165824 free bytes and 72MB until OOM, max allowed footprint 82890456, growth limit 134217728
Die For-Schleife läuft einfach unendlich weiter, da tempImages sich immer verdoppelt.
Wenn z.B. tempImages 2 Einträge hat, dann wird die Größe des Arrays immer ^2 nach jedem Durchlauf.

Ich hab echt keine Ahnung, wieso tempImages auch dadurch größer wird.

Gruss
 

Robat

Top Contributor
Also wenn tempImages größer wird, wenn du in eine andere Liste etwas einfügst, müssen ja beide auf das gleiche Objekt zeigen..
Oder du machst im Code irgendwo noch was anderes, was man hier nicht sieht..
 

bruce85

Bekanntes Mitglied
Danke für die Antwort.
Stimmt, beim starten der App, weise ich tempImages die ArrayList von ....getImages() zu:
Java:
tempImages = AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages();
Somit hat sich auch gleichzeitig tempImages verändert, wenn ....getImages() etwas hinzugefügt bekommt.
Ich hab das jetzt so geändert, wie Du es vorgeschlagen hattest:
Java:
tempImages.addAll(AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages());

Jetzt funktioniert das auch endlich in der For-Schleife:
Java:
for (int i=0; i<tempImages.size(); i++) {
    AppConst.ARTICLE_ITEM_LIST.get(AppConst.ARTICLE_ITEM_SELECTED).getImages().add(tempImages.get(i));
}
Vielen Dank für die Hilfe. :)

Gruss
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Android Probleme mit BLE-Notify Android & Cross-Platform Mobile Apps 2
J Android Probleme mit der Realm Datenbank Android & Cross-Platform Mobile Apps 3
J Android Probleme mit Navigation-Fragments? Android & Cross-Platform Mobile Apps 0
N Probleme mit custom dynamic ListView Android & Cross-Platform Mobile Apps 15
B Android Probleme mit Android Studio Android & Cross-Platform Mobile Apps 6
B Android Probleme mit Realm Datenbank Android & Cross-Platform Mobile Apps 2
J Android Probleme mit FileProvider Android & Cross-Platform Mobile Apps 1
B Probleme mit Firebase Authentication Android & Cross-Platform Mobile Apps 25
H Android Probleme mit SearchView in ArrayAdapter Android & Cross-Platform Mobile Apps 7
ATZENPOWER Android Probleme mit mobilen Daten via lte Android & Cross-Platform Mobile Apps 10
S Android Probleme beim Verbinden mit einer HTTPS Seite Android & Cross-Platform Mobile Apps 4
B Android Probleme mit RealmObject? Android & Cross-Platform Mobile Apps 1
M Android ExpandableListView merkwürdige Probleme Android & Cross-Platform Mobile Apps 20
F Probleme mit Google-Maps Android & Cross-Platform Mobile Apps 0
B Android Probleme mit ViewPager? Android & Cross-Platform Mobile Apps 5
J Probleme mit ViewPager und Activity Android & Cross-Platform Mobile Apps 1
B Android Probleme mit Eclipse? Android & Cross-Platform Mobile Apps 6
E MAVLINK Probleme Android & Cross-Platform Mobile Apps 1
C Android Probleme mit JavaMail Android & Cross-Platform Mobile Apps 5
B Android Probleme mit Facebook-SDK? Android & Cross-Platform Mobile Apps 1
D Android Probleme mit info/warning (1, 902) Android & Cross-Platform Mobile Apps 4
D Android Gallery Probleme Android & Cross-Platform Mobile Apps 3
B Probleme mit App auf Galaxy S3? Android & Cross-Platform Mobile Apps 13
S Hat der AVD-Manager Probleme mit GPS? Android & Cross-Platform Mobile Apps 5
P Probleme mit xml-Layout Android & Cross-Platform Mobile Apps 2
P Android Probleme mit Spinner Android & Cross-Platform Mobile Apps 3
F Layout mit listViews (Scrolling-Probleme) Android & Cross-Platform Mobile Apps 2
A Android Probleme mit Dialog Android & Cross-Platform Mobile Apps 4
U SQLite-Datenbank Probleme Android & Cross-Platform Mobile Apps 8
T Android Probleme bei Facebook Integration Android & Cross-Platform Mobile Apps 5
tfa Android Layout-Probleme: View programmatisch erweitern (addContentView) Android & Cross-Platform Mobile Apps 7
A Probleme mit ListView / ArrayAdapter Android & Cross-Platform Mobile Apps 3
A Probleme mit Form.isShown Android & Cross-Platform Mobile Apps 9
A Probleme mit Calendar auf dem Handy Android & Cross-Platform Mobile Apps 3
U Probleme mit der drawString Methode bei Canvas Android & Cross-Platform Mobile Apps 8
P Probleme mit dem Deployment Android & Cross-Platform Mobile Apps 3
P Probleme mit Streams Android & Cross-Platform Mobile Apps 4
C 2 kleine Probleme (Datei lesen, String durchsuchen) Android & Cross-Platform Mobile Apps 16
G Proguard Obfuscator macht Probleme Android & Cross-Platform Mobile Apps 2
P Probleme mit RMS Android & Cross-Platform Mobile Apps 5
T Android ArrayList sortieren mit 2 Werten ohne thencomparing , Wie? Android & Cross-Platform Mobile Apps 10
J Android Studio - ArrayList - Selected Item ermitteln Android & Cross-Platform Mobile Apps 13
H Android ArrayList <-> ArrayAdapter <-> ListView Android & Cross-Platform Mobile Apps 10
M Android List<Sprite> sprites = new ArrayList<Sprite>() REMUVE Android & Cross-Platform Mobile Apps 2
K Problem mit arraylist und button Android & Cross-Platform Mobile Apps 16
F Android ArrayList nicht funktional in Android!? Android & Cross-Platform Mobile Apps 6

Ähnliche Java Themen

Neue Themen


Oben