10

Ich versuche, eine App zu machen, die Nachrichten aus dem Netzwerk geladen wird und dynamisch aktualisiert wird. Ich verwende eine RecyclerView und CardView, um den Inhalt anzuzeigen. Ich verwende Jsoup, um Websites zu analysieren. Ich glaube nicht, dass mein Code benötigt wird, weil meine Frage eher theoretisch als praktisch ist. Ich möchte den Prozess der dynamischen Aktualisierung mit notifyDataSetChanged() verstehen. In meiner Hauptaktivität bekomme ich alle Header und füge sie zur Liste hinzu. Aber ich muss warten, bis alle Elemente geladen sind, um sie anzuzeigen. Ich würde wirklich schätzen, wenn jemand einen Beispielcode von dem veröffentlichen könnte, was ich versuche zu tun, weil ich viel Information über die Kombination ViewHolder, Adapter und RecyclerView nicht finden konnte.RecyclerView Adapter und ViewHolder Update dynamisch

+0

können Sie Ihren Adapter-Code hier posten .... –

Antwort

24

In Ihrem RecyclerView adapter, sollten Sie eine ArrayList und auch eine Methode haben addItemsToList(items) Listenelemente der ArrayList hinzuzufügen. Dann können Sie Listenelemente per Aufruf adapter.addItemsToList(items) dynamisch hinzufügen. Nachdem Sie alle Ihre Listenelemente zur ArrayList hinzugefügt haben, können Sie adapter.notifyDataSetChanged() aufrufen, um Ihre Liste anzuzeigen.

Hoffe, das ist klar!

+0

dieser Teil ist klar, danke. Aber wie sieht es mit einem ViewHolder aus? – Vendetta8247

+0

'ViewHolder beschreibt eine Objektansicht und Metadaten über ihren Platz in der RecyclerView'. Ihre dynamische Update-Liste unterscheidet sich nicht von normalen "ViewHolder" – Xcihnegn

+3

Ich habe herausgefunden, wie es zu beenden ist. Das einzige, was Sie nicht erwähnt haben, ist, dass der 'adapter.notifyDataSetChanged()' im UI-Thread aufgerufen werden muss. Und dazu benutzte ich 'runOnUiThread (new Runnable() {...})' – Vendetta8247

Verwandte Themen