Ir ao conteúdo
  • Cadastre-se

Problemas com CheckBox no RecyclerView em Android Studio


Posts recomendados

Galera sou novo no fórum e também no android, eu estou fazendo um app de animes para entregar como projeto na prova parcial da faculdade, e eu estou usando o RecyclerView para gerar os episódios dos animes, porém, quando eu rodo o app e clico por exemplo no checkbox do episodio 1 o episodio 11 também é clicado assim como o checkbox do 2 com 12, 3 com 13, como resolver isso ?

 

Meu Adapter:

package grcseries.com.br.grcseries.controle;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

import grcseries.com.br.grcseries.R;
import grcseries.com.br.grcseries.variaveis.Catalogo;

public class TelaAnimesAdapterSecundaria extends RecyclerView.Adapter {
    private final List<Catalogo> lista;
    private final Context contexto;

    public TelaAnimesAdapterSecundaria(ArrayList<Catalogo> lista, Context contexto) {
        this.lista = lista;
        this.contexto = contexto;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(contexto).inflate(R.layout.layout_episodio, parent,false);
        return new TelaAnimesHolderSecundaria(view);
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
        final TelaAnimesHolderSecundaria hd2 = (TelaAnimesHolderSecundaria) holder;
        final int pos = position;
        //position = position + 1;
        //hd2.ckbEpisodio.setText("Episódio " + position);

        hd2.ckbEpisodio.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                CheckBox cb = (CheckBox) v;
                Catalogo contact = (Catalogo) cb.getTag();

                contact.setSelected(cb.isChecked());
                lista.get(pos).setSelected(cb.isChecked());

                Toast.makeText(v.getContext(), "Clicked on Checkbox: " + cb.getText() + " is " + cb.isChecked(), Toast.LENGTH_LONG).show();
            }
        });
    }

    @Override
    public int getItemCount() {
        return (lista!=null)?lista.size():0;
    }

}

 

Meu Holder:

package grcseries.com.br.grcseries.controle;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import grcseries.com.br.grcseries.R;

public class TelaAnimesHolderSecundaria extends RecyclerView.ViewHolder {

    final ImageView imgCapa;
    final TextView txtTitulo;
    final TextView txtSinopse;
    final TextView txtTemporada;
    final CheckBox ckbEpisodio;

    public TelaAnimesHolderSecundaria(View itemView) {
        super(itemView);

        imgCapa = (ImageView) itemView.findViewById(R.id.imgCapa);
        txtTitulo = (TextView) itemView.findViewById(R.id.txtTitulo);
        txtSinopse = (TextView) itemView.findViewById(R.id.txtSinopse);
        txtTemporada = (TextView) itemView.findViewById(R.id.txtTemporada);
        ckbEpisodio = (CheckBox) itemView.findViewById(R.id.ckbEpisodio);
    }
}

 

Link para o comentário
Compartilhar em outros sites

Como está sendo gerado os IDs dos episódios? O que faz a classe R?

 

Talvez algo de errado com os valores de Catalogo?

 

Depurando o click em um checkbox, você vai saber o que ocorre para que mais de um checkbox seja marcado ao mesmo tempo. O erro (pelo menos não achei nada aqui, já que eu brinco pouquíssimo com Android) deve estar em outra ou outras classes.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...