Error selecting an item in a Recycler View

0

I hope you can help me with my problem, I have spent a lot of time trying to correct it. I have a recycler view but when I click (in this case, symbol +) in one item, I also select another one in a lower position. This way.

this is the item not selected

This is the Adapter of my recycler.

public class UsuariosImagenAdapter extends RecyclerView.Adapter<UsuariosImagenAdapter.UsuariosHolder> {
private ArrayList<Usuario> listaUsuarios;
private static final int TYPE_HEADER = 0;
private static final int TYPE_CELL = 1;
private Context context;

@Override
public int getItemViewType(int position) {
    switch (position) {
        case 0:
            return TYPE_HEADER;
        default:
            return TYPE_CELL;
    }

}
//Brrar context contex y this.context=context;
public UsuariosImagenAdapter(ArrayList<Usuario> listaUsuarios, Context context) {
    this.listaUsuarios = listaUsuarios;
    this.context=context;
}
@NonNull
@Override
public UsuariosHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = null;
    switch (viewType) {
        case TYPE_HEADER: {
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_item_card_big, parent, false);
            return new UsuariosHolder(view) {
            };
        }
        case TYPE_CELL: {
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_item_card_small, parent, false);

            return new UsuariosHolder(view) {
            };
        }
    }
    return null;
}
@Override
public void onBindViewHolder(@NonNull final UsuariosHolder holder, final int position) {
    switch (getItemViewType(position)) {
        case TYPE_HEADER:
            holder.header.setImageResource(R.drawable.header1);
            break;
        case TYPE_CELL:
            //Favorite System
           holder.btn_favorites.setImageResource(R.drawable.ic_baseline_favorite_border_24px);

           holder.btn_favorites.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   addOrRemoveFavorite (listaUsuarios.get(position),true);
                   holder.btn_favorites.setImageResource(R.drawable.ic_baseline_favorite_24px);

               }
           });

            holder.txtDocumento.setText(listaUsuarios.get(position).getDocumento().toString());
            holder.txtNombre.setText(listaUsuarios.get(position).getNombre());
            holder.txtProfesion.setText(listaUsuarios.get(position).getProfesion());
            holder.id_producto.setText(listaUsuarios.get(position).getId());
           //imagen
            Picasso.with(context)
                    .load(listaUsuarios.get(position).getRuta_imagen())
                    .error(R.drawable.cargando)
                    .into(holder.imagen);
            holder.btPlus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    // current object
                    Usuario tempObj = listaUsuarios.get(position);


                        holder.btMinus.setVisibility(View.VISIBLE);
                        holder.btPcsCount.setVisibility(View.VISIBLE);
                        int number = Integer.parseInt(holder.btPcsCount.getText().toString());
                        number++;
                        tempObj.setNumber(String.valueOf(1));
                        holder.btPcsCount.setText(Integer.toString(number));

                        try {
                            //Create new Cart item
                            Cart cartItem = new Cart();
                            cartItem.id = Integer.parseInt(holder.id_producto.getText().toString());
                            cartItem.name = holder.txtNombre.getText().toString();
                            cartItem.amount = holder.btPcsCount.getText().toString();
                            cartItem.descripcion = holder.txtProfesion.getText().toString();
                            cartItem.price = holder.txtDocumento.getText().toString();
                            cartItem.link = listaUsuarios.get(position).getRuta_imagen();
                            //add to DB
                            Common.cartRepository.insertToCart(cartItem);
                            Log.d("EDMT_DEBUG", new Gson().toJson(cartItem));
                            Toast.makeText(context, "Producto añadido", Toast.LENGTH_SHORT).show();
                            ((ActividadPrincipal) view.getContext()).updateItemCount(true);
                        } catch (Exception ex) {
                            Cart cartItem = new Cart();
                            cartItem.id = Integer.parseInt(holder.id_producto.getText().toString());
                            cartItem.name = holder.txtNombre.getText().toString();
                            cartItem.amount = holder.btPcsCount.getText().toString();
                            cartItem.descripcion = holder.txtProfesion.getText().toString();
                            cartItem.price = holder.txtDocumento.getText().toString();
                            cartItem.link = listaUsuarios.get(position).getRuta_imagen();
                            //add to DB
                            Common.cartRepository.updateCart(cartItem);
                            Log.d("EDMT_DEBUG", new Gson().toJson(cartItem));
                            Toast.makeText(context, "Producto actualizado", Toast.LENGTH_SHORT).show();
                            ((ActividadPrincipal) view.getContext()).updateItemCount(true);
                        }
                    }

            });
            holder.btMinus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (Integer.parseInt(holder.btPcsCount.getText().toString())== 1) {
                        int a = Integer.parseInt(holder.btPcsCount.getText().toString());
                        a--;
                        holder.btPcsCount.setText(Integer.toString(a));

                        holder.btMinus.setVisibility(View.INVISIBLE);
                        holder.btPcsCount.setVisibility(View.INVISIBLE);

                    }else{
                        int a = Integer.parseInt(holder.btPcsCount.getText().toString());
                        a--;
                        holder.btPcsCount.setText(Integer.toString(a));
                    }
                }
            });
    }
}
private void addOrRemoveFavorite(Usuario usuario, boolean isAdd) {
}
private void addFavorite(Usuario usuario) {
}
private ActividadPrincipal getContext() {
    // TODO Auto-generated method stub
    return (ActividadPrincipal) context;
}
@Override
public int getItemCount() {
    return listaUsuarios.size();
}
public class UsuariosHolder extends RecyclerView.ViewHolder{
    ImageView btPlus, btMinus, btn_favorites;
    public TextView btPcsCount, id_producto;
    public TextView txtDocumento,txtNombre,txtProfesion, btcount;
    ImageView imagen, header ;
    public UsuariosHolder(View itemView) {
        super(itemView);
        id_producto= (TextView) itemView.findViewById(R.id.id_producto);
        txtDocumento= (TextView) itemView.findViewById(R.id.idDocumento);
        txtNombre= (TextView) itemView.findViewById(R.id.idNombre);
        txtProfesion= (TextView) itemView.findViewById(R.id.idProfesion);
        imagen=(ImageView) itemView.findViewById(R.id.idImagen);
        btPlus = (ImageView) itemView.findViewById(R.id.botonmas);
        btPcsCount=(TextView)itemView.findViewById(R.id.counterValue);
        btMinus = (ImageView) itemView.findViewById(R.id.botonmenos);
        header=(ImageView) itemView.findViewById(R.id.header1);
        btcount=(TextView) itemView.findViewById(R.id.counterValue2);
        btn_favorites = (ImageView) itemView.findViewById(R.id.btn_favorite);
       }
}
}

MANY THANK YOU FOR YOUR HELP

    
asked by IGr135 17.10.2018 в 23:15
source

0 answers