Android - Problème d'actualisation de RecyclerView
仅有的幸福
仅有的幸福 2017-05-24 11:38:08
0
3
963

Création d'une vue de recyclage pour définir les informations personnelles. Comme indiqué ci-dessous :

Puis après avoir cliqué, une invite apparaîtra comme indiqué ci-dessous :

Une fois la sélection terminée, l'utilisateur choisit de confirmer ou d'annuler la sélection, comme indiqué ci-dessous :

Une fois la sélection confirmée, vous reviendrez à la vue recycler. Comment mettre à jour cette modification ? (L'image est la valeur par défaut dans le fichier XML. Comment doit-elle être mise à jour vers celle sélectionnée par l'utilisateur ?)

仅有的幸福
仅有的幸福

répondre à tous(3)
漂亮男人

Déjà résolu. Au début, je voulais trouver un moyen d'actualiser la vue du recycleur sans modifier les données de l'ensemble de données. Mais au final, il semblait qu’il n’y avait pas d’autre solution.
J'ai donc créé une nouvelle classe d'ensemble de données (très courante, contenu des données, set, méthodes get). Initialisez les données dans l'activité appelant recyclerview.
Parce que j'ai renvoyé l'activité après avoir appelé la caméra système. Par conséquent, une nouvelle méthode est créée dans l’activité pour appeler l’activité qui détermine l’interface dans l’image ci-dessus. Utilisé pour informer l'adaptateur recyclerview que les données de cet élément ont été mises à jour. En adaptateur :

 mData.get(1).setAvatarUri(photoFile);
            mData.get(1).setType(2);
            notifyItemChanged(1);
            

Eh bien, c’est exactement le même que celui en ligne. (J'espère que quelqu'un avec d'autres méthodes pourra répondre et me donner une idée)

巴扎黑

Vous pensez que c'est trop compliqué. Utiliser recyclerview est un peu excessif. Vous devez simplement écrire beaucoup plus de code. Cliquez simplement sur le bouton OK et définissez l'image directement.
xml :

<TextView
        android:drawableRight="@drawable/avatar"
        android:drawablePadding="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:textSize="16sp"
        android:text="头像"
        android:background="@color/white"
        android:gravity="center_vertical"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
        

Après avoir cliqué sur le bouton OK, utilisez :
setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) pour définir un nouvel avatar

習慣沉默

Il existe plusieurs plans pour référence. Notre application effectue ce genre de travail étape par étape

.
  • Utilisez startActivityForResult(). Une fois la sélection de l'image terminée, transmettez l'uri et la position à l'activité précédente, puis modifiez l'uri dans les données en fonction de la position et actualisez les données

  • Utilisez la diffusion, personnalisez une diffusion pouvant recevoir l'uri et la position, inscrivez-vous sur la page de liste, envoyez la diffusion après avoir sélectionné l'image, puis procédez de la même manière que ci-dessus

  • Utilisez le bus d'événement, nous choisissons EventBus, enregistrons l'événement sur la page de liste, sélectionnons l'image et envoyons le message correspondant

Nous avons initialement utilisé startActivityForResult et diffusé principalement pour éviter d'introduire des bibliothèques tierces. Dans le même temps, les deux pages ne s'appelaient pas directement et réduisaient le couplage. Cependant, à mesure que de plus en plus d'entreprises similaires sont devenues disponibles dans la période ultérieure, comme cliquer sur les favoris et ajouter des commentaires sur la page de détails, La page de liste doit actualiser le nombre de commentaires et de collections... L'utilisation de ces deux méthodes entraînera de plus en plus de code redondant, nous avons donc introduit EventBus, qui non seulement réduit le quantité de code, mais augmente également la lisibilité du code et réduit le Le code est couplé, et cette bibliothèque est assez petite et facile à utiliser Il est recommandé au sujet d'utiliser directement cette bibliothèque

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal