Radio Button CardView(Lista/RecyclerView)

04/11/2016

0

Tenho um Recycler View com CardView de perguntas. Cada pergunta tem 3 radio button(sim, talvez, não) como resposta. Até então ta tudo funcionando, exceto que;

Quando vamos respondendo as perguntas. Os radioButtons da perguntas seguintes marcam sozinhos. E se mudarmos a responta e voltarmos na lista alterar sozinho as respostas das perguntas anteriores.

Agradeço ajuda... segue código.
public class QuizRecyclerViewAdapter extends RecyclerView.Adapter<QuizRecyclerViewAdapter.QuizViewHolder> {

    Context context;
    //
    private List<PerguntasQuiz> perguntasQuizList;

    //
    public QuizRecyclerViewAdapter() {
        this.perguntasQuizList = new PerguntasDAO().listaTodasPerguntasBanco();
    }

    //
    public QuizRecyclerViewAdapter(List<PerguntasQuiz> perguntasQuizList) {
        this.perguntasQuizList = perguntasQuizList;
    }

    @Override
    public QuizViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Desta forma o card view não pega o match_Parent no layout_width
        //View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.perguntas_card_view, null);

        // Assim(false) a view raiz, é usada somente para inflar o outro xml(card_view)
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.perguntas_card_view, parent, false);
        QuizViewHolder quizViewHolder = new QuizViewHolder(view);
        return quizViewHolder;

    }

    @Override
    public void onBindViewHolder(final QuizViewHolder holder, final int position) {
        // Recupera as informações na posição em questão.
        final PerguntasQuiz perguntasQuiz = perguntasQuizList.get(position);
        //


        // Modifica o texto na View.
        holder.textViewPerguntas.setText(perguntasQuiz.getPergunta());
        //
        holder.radioButtonSim.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                atualizaListaPerguntaQuizResposta(holder.getLayoutPosition(), PerguntasQuiz.RESPOSTA_SIM);

            }
        });

        holder.radioButtonAsVezes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                atualizaListaPerguntaQuizResposta(holder.getLayoutPosition(), PerguntasQuiz.RESPOSTA_AS_VEZES);

            }
        });

        holder.radioButtonNao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                atualizaListaPerguntaQuizResposta(holder.getLayoutPosition(), PerguntasQuiz.RESPOSTA_NAO);
            }
      });
    }

    public void atualizaListaPerguntaQuizResposta(int posição, int resposta) {

        perguntasQuizList

    .get(posição).setResposta(resposta);

        }
    public List<PerguntasQuiz> getPerguntasQuizList() {

        return perguntasQuizList;

    }

    @Override
    public int getItemViewType(int position) {
        return super.getItemViewType(position);
    }

    @Override
    public long getItemId(int position) {
        PerguntasQuiz perguntasQuiz = perguntasQuizList.get(position);
        long reposta;

        return super.getItemId(position);
    }

    @Override
    public boolean equals(Object o) {
        return super.equals(o);
    }

    @Override
    public int getItemCount() {
        int tamanhoLista;
        if (perguntasQuizList == null || perguntasQuizList.isEmpty()) {
            tamanhoLista = 0;
        } else {
            tamanhoLista = this.perguntasQuizList.size();
        }

        return tamanhoLista;
    }

    public static class QuizViewHolder extends RecyclerView.ViewHolder {

        private TextView textViewPerguntas;
        private RadioGroup radioGroup;
        private RadioButton radioButtonSim;
        private RadioButton radioButtonAsVezes;
        private RadioButton radioButtonNao;


        public QuizViewHolder(View itemView) {
            super(itemView);
            radioGroup = (RadioGroup) itemView.findViewById(R.id.card_view_radio_group);
            radioButtonSim = (RadioButton) itemView.findViewById(R.id.card_view_radio_button_sim);
            radioButtonAsVezes = (RadioButton) itemView.findViewById(R.id.card_view_radio_button_as_vezes);
            radioButtonNao = (RadioButton) itemView.findViewById(R.id.card_view_radio_button_nao);
            textViewPerguntas = (TextView) itemView.findViewById(R.id.text_view_id_perguntas_quiz);
            //
            radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    if (checkedId == R.id.card_view_radio_button_sim) {
                        radioButtonSim.setChecked(true);
                        group.setTag(checkedId);
                        Log.i("log", "Item: " + getAdapterPosition() + " selecionado SIM");
                    } else if (checkedId == R.id.card_view_radio_button_as_vezes) {
                        radioButtonAsVezes.setChecked(true);
                        group.setTag(checkedId);
                        Log.i("log", "Item: " + getAdapterPosition() + " selecionado AS VEZES");
                    } else if (checkedId == R.id.card_view_radio_button_nao) {
                        radioButtonNao.setChecked(true);
                                  group.setTag(checkedId);
                        Log.i("log", "Item: " + getAdapterPosition() + " selecionado NÃO");
                    } else {
                        group.clearCheck();
                    }

                }
            });

        }
        }
    }




    public class QuizEmocionalActivity extends FragmentActivity {

    private AdView adView;
    private RecyclerView recyclerView;
    QuizRecyclerViewAdapter quizRecyclerViewAdapter;
    private Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz_emocional);

        //

        // Admob
        adView = (AdView) findViewById(R.id.quiz_activity_admob);
        adView.setAdListener(new ToastListener(this));
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
        //
        recyclerView = (RecyclerView) findViewById(R.id.quiz_emocional_recycle_view);
        recyclerView.setHasFixedSize(true);
        //
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(linearLayoutManager);

        //

        //  List<PerguntasQuiz> perguntasQuizList =  perguntasDAO.listaTodasPerguntasBanco();

//        Informacao informacao = informacaoDAO.recuoearInfoPeloId(2);
//        Toast.makeText(this, informacao.getTitulo(), Toast.LENGTH_LONG).show()

//QuizRecyclerViewAdapter quizRecyclerViewAdapter = new QuizRecyclerViewAdapter();
        this.quizRecyclerViewAdapter = new QuizRecyclerViewAdapter();
        recyclerView.setAdapter(quizRecyclerViewAdapter);

    }


    public void onClickSalvarQuiz(View view) {

        List<PerguntasQuiz> perguntasQuizList = quizRecyclerViewAdapter.getPerguntasQuizList();

        int pontuacao = 0;
        boolean ok = true;

        for (int i = 0; i < perguntasQuizList.size(); i++) {

            if (perguntasQuizList.get(i).getResposta() == -1) {

                alertRespostasQuiz(i + 1);
                ok = false;
                break;

            } else {
                pontuacao += perguntasQuizList.get(i).getResposta();

            }

        }

        if (ok == true) {
            // 
Eric Clauber

Eric Clauber

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar