Android: la Modification de la visibilité d'un affichage dans recyclerView

J'ai mis en place un recyclerView dans mon projet.

J'ai un Button dans mon recyclerView row. Le code de mon chaque ligne de recyclerView est comme ceci:

savedmessage_custom_row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="4dp"
android:background="#ffffff"
android:orientation="vertical">
<TextView
    android:id="@+id/message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    android:text="Dummy text" />
<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button"
    android:visibility="gone"/>
</LinearLayout>

La visibilité du bouton est gone. Je veux changer la visibilité de ce bouton pour "visibles" lorsque quelqu'un clique sur le message textView au-dessus d'elle. J'ai mis en place un simple onClickLiestener() sur le message (textView) et changé la visibilité de buttonsur le clic de la message. Je savais que ce n'était pas d'aller travailler, mais je voulais voir les résultats. Les résultats sont bizarres. Si je clique sur le textView de la ligne 1, le bouton de ligne 7,17,19 etc aussi devient visible. Je peux deviner ce qui pourrait être coz de la mise en cache de la viewHolder.

MyViewHolder est quelque chose comme ceci:

class MyViewHolder extends RecyclerView.ViewHolder {
    TextView message;
    public MyViewHolder(final View itemView) {
        super(itemView);
        message = (TextView) itemView.findViewById(R.id.message);
        message.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                itemView.findViewById(R.id.button).setVisibility(View.VISIBLE);
            }
        });
    }
}

Quelqu'un peut-il me guider comment puis-je changer la visibilité d'un bouton, d'un particulier ligne uniquement, de mon recyclerView?

  • Merci de poster votre code d'adaptateur. Vous aurez besoin d'ajouter une propriété à modèle du bouton visible de l'état.
InformationsquelleAutor Srujan Barai | 2016-05-21