vendredi 8 mai 2015

RecyclerView data are multiple modified/displayed

I've a small problem with my RecyclerView. It's well filled by my adapter with some TextViews, an ImageView and some buttons. When there's an OnClick-Event on one of the buttons it modifies a TextView - so far so good but when I'm scrolling some items further another RecyclerView-item is also modified and has the value of the originally modified one.

I tried already to move the setOnClickListener into my ViewHolder but the result was the same.

May be you can help me.

public class MyAdapter extends RecyclerView.Adapter {

// some vars .... and a constructor

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.recyclerview_item, viewGroup, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int i) {
    // ...

    viewHolder.myTextView.setText("clear");
    viewHolder.myButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            viewHolder.myTextView.setText("modified");
        }
    });

    // ...
}

@Override
  public int getItemCount() {
    return mProducts.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
    private TextView productMultibuy;
    private Button productAddToShoppingList;

    // ...
    public ViewHolder(View itemView) {
        super(itemView);

        myTextView = (TextView) itemView.findViewById(R.id.my_textview);
        myButton = (Button) itemView.findViewById(R.id.my_button);

        // ...


        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });


        itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return false;
            }
        });

    }
 }

}

Aucun commentaire:

Enregistrer un commentaire