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.
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)