RecyclerView Adaptateur et ViewHolder mise à jour dynamiquement
Je suis en train de faire une application qui sera le chargement des nouvelles du réseau et sera mise à jour dynamiquement. Je suis à l'aide d'un RecyclerView
et CardView
pour afficher le contenu. J'utilise Jsoup
pour analyser les sites. Je ne pense pas que mon code est nécessaire parce que ma question est plus théorique que pratique. Je veux comprendre le processus de mise à jour dynamique à l'aide de notifyDataSetChanged()
. Dans mon activité principale, je reçois tous les en-têtes et les ajouter à la liste. Mais j'ai besoin d'attendre jusqu'à ce que tous les éléments sont chargés de commencer à afficher. Je serais vraiment reconnaissant si quelqu'un pouvait poster un exemple de code de ce que je suis en train de faire parce que je ne pouvais pas trouver beaucoup d'informations sur la manière de combiner ViewHolder
, Adapter
et RecyclerView
.
OriginalL'auteur Vendetta8247 | 2015-02-16
Vous devez vous connecter pour publier un commentaire.
Dans votre
RecyclerView adapter
, vous devriez avoir unArrayList
et aussi une méthodeaddItemsToList(items)
à ajouter des éléments de liste à laArrayList
. Ensuite, vous pouvez ajouter des éléments de liste par appeladapter.addItemsToList(items)
de façon dynamique. Après tout, la liste de vos éléments ajoutés à laArrayList
ensuite, vous pouvez appeleradapter.notifyDataSetChanged()
pour afficher votre liste.Espère que c'est clair!
ViewHolder describes an item view and metadata about its place within the RecyclerView
. Votre dynamique de la mise à jour de la liste de pas différent avec la normaleViewHolder
J'ai compris comment faire pour le terminer. La seule chose que vous n'avez pas mentionné, c'est que le
adapter.notifyDataSetChanged()
doit être appelée dans le thread de l'INTERFACE utilisateur. Et pour ce faire j'ai utilisérunOnUiThread(new Runnable(){...})
sans vos codes difficile de savoir quel est le processus que vous utilisez pour obtenir la liste de vos éléments, il semble que vous utilisez un fil pour le faire, mais en mieux, vous devez utiliser thread d'arrière-plan
Asynctask
à obtenir des éléments de liste, vous pouvez communiquer avec le principal de l'INTERFACE utilisateur dansonPostExecute(listItems)
mon code a un peu de mal car j'ai eu des mauvais paramètres dans
postExecute()
. Mais encore de l'utiliser dans un thread séparé à l'intérieur de AsyncTask est ce que je cherchais, car cela ajoute à chaque élément séparément, sans attendre la liste complète de la charge! Et je pense que ça pourrait m'aider dans l'avenir, quand je vais avoir beaucoup plus de têtes!OriginalL'auteur Xcihnegn