Maison > Questions et réponses > le corps du texte
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 ?)
漂亮男人2017-05-24 11:40:08
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)
巴扎黑2017-05-24 11:40:08
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
習慣沉默2017-05-24 11:40:08
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
.