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 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