Recyclerview Items Stück für Stück hinzufügen? (Aus dem Asynctask heraus)

  • Hi,


    derzeit schreibe ich an einer App, welche Bildlinks aus einer Website extrahiert und diese in einem Grid in der App anzeigen soll (Mit Recyclerview).
    Ich logge mich von einer Activity aus ein und bekomme die Session ID als Cookie, welche benötigt wird, um die Inhalte der Seite sehen zu können (Man muss eingeloggt sein). Per Intent gebe ich dann diese Session ID an die nächste Activity.


    Die Bilder in voller Auflösung sind auf der Website auf eigenen Unterseiten. Von daher wird zuerst die Hauptseite mit jsoup geöffnet und es werden die Links zu den eigentlichen Unterseiten geparsed. Danach wird jeder Link mit jsoup geöffnet und von jeder Unterseite wird der Bildlink extrahiert. Dies mache ich mit inneren Asynctask Klassen:


    Es gibt also eine Asynctask-Klasse, welche in der doinBackground-Methode die Hauptseite aufruft und die Links zu den Unterseiten extrahiert.
    In der onPostExecute-Methode wird dann in einer for-Schleife für jeden Link eine neue Instanz einer zweiten Asynctask Klasse aufgerufen, welche für den jeweiligen Link den Bildlink extrahiert.


    In der onPostExecute-Methode der zweiten Asynctask Klasse hat man also einen String (Der Bildlink). In genau dieser Methode möchte ich den jeweiligen Bildlink (mit Picasso, Glide, etc...) zur Recyclerview hinzufügen.


    Und genau das ist anscheinend nicht möglich. Jedes Tutorial im Internet behandelt die Recyclerview nur so, dass eine komplette Liste von Links übergeben wird. Ich habe aber keine komplette Liste von Links, da das durchlaufen der zweiten Asynctask Objekte schon bis zu 30 Sekunden oder so dauern kann, es sind nämlich hunderte Bildlinks.


    Das ist im Grunde genommen meine Frage. Es muss doch eine Möglichkeit geben, nach jedem fertig extrahiertem Bildlink eben diesen zur Recyclerview als Item hinzuzufügen. Ist nur die Frage wie :/


    In meinem hier geposteten Quellcode ist die Recyclerview noch nicht mit drin, aber ich hoffe ihr könnte sehen, wie sich das ganze abspielt. Der Code funktioniert übrigens einwandfrei. Ich bekomme nach und nach alle Bildlinks, dies habe ich schon mit dynamisch genrierten Imageviews, welche mit Glide mit dem Link befüllt werden, ausprobiert. Bloß einfach so kostet es halt zu viel ressourcen und die App stürzt irgendwann ab.


    Es muss doch einen Weg dafür geben, wenn man nicht sofort die komplette Liste hat, sondern die sich erst später nach und nach bildet :/


    Ich hoffe ihr könnt mir helfen :D

  • Ich benutze jsoup zum runterladen und parsen der Seite(n).
    Dazu möchte ich halt Glide benutzen, um die Bilder anhand der geparsten Bild URLs in den ImageViews anzeigen zu lassen.


    Ich habe den Code aus dem ersten Post schon ein mal genommen und in eine neue Activity kopiert und halt auch eine Adapterklasse inklusive Viewholder Subklasse erstellt.
    Die jeweilige Imageview wird ja in onBindViewHolder befüllt. Aber auch dort müsste ich bereits eine fertige Liste mit den Strings haben, welche ich ja nicht habe.


    Es muss doch irgenwas geben, damit ich mit einem Grid voller leerer ImageViews anfangen kann und diese dann nach und nach befüllt werden, sobald eine neue Bild-URL übergeben wurde.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!