Rev 4 | Rev 7 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
package com.cesams.twogetskills.adapter;import android.content.Context;import android.os.Build;import android.text.Html;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.RadioButton;import android.widget.TextView;import androidx.recyclerview.widget.RecyclerView;import com.cesams.twogetskills.R;import com.cesams.twogetskills.entity.Answer;import com.cesams.twogetskills.entity.Question;import com.cesams.twogetskills.pojo.QuizResponse;import java.util.List;import com.codesgood.views.JustifiedTextView;public class QuizSingleAnswerListViewAdapter extends RecyclerView.Adapter<QuizSingleAnswerListViewAdapter.ViewHolder> {private final static String TAG = "C2GS - QuizSingleAdapter";private Question mQuestion;private List<Answer> mAnswers;private List<QuizResponse> mQuizResponses;private LayoutInflater mInflater;private int selected = -1;// data is passed into the constructorpublic QuizSingleAnswerListViewAdapter(Context context, Question question, List<Answer> answers, List<QuizResponse> quizResponses) {this.mInflater = LayoutInflater.from(context);this.mQuestion = question;this.mAnswers = answers;this.mQuizResponses = quizResponses;}// inflates the row layout from xml when needed@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = mInflater.inflate(R.layout.fragment_quiz_single_answer_item, parent, false);return new ViewHolder(view);}// binds the data to the TextView in each row@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {Answer mAnswer = mAnswers.get(position);holder.mText.setText(Html.fromHtml(mAnswer.getText(), Html.FROM_HTML_MODE_COMPACT));holder.mRadioButton.setChecked(position == selected);}// total number of rows@Overridepublic int getItemCount() {return mAnswers.size();}// stores and recycles views as they are scrolled off screenpublic class ViewHolder extends RecyclerView.ViewHolder {//JustifiedTextView mText;TextView mText;RadioButton mRadioButton;ViewHolder(View itemView) {super(itemView);mText = itemView.findViewById(R.id.textView3);mRadioButton = itemView.findViewById(R.id.fragment_quiz_single_answer_item_radio);mRadioButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {selected = getBindingAdapterPosition();Answer answer = mAnswers.get(selected);int position = -1;for(int i = 0; i < mQuizResponses.size(); i++){if(mQuestion.getUuid().equals(mQuizResponses.get(i).getQuestionUuid())){position = i;break;}}if(position > -1) {mQuizResponses.get(position).setAnswerUuid(answer.getUuid());mQuizResponses.get(position).setPoints(answer.getCorrect().equalsIgnoreCase("y") ? mQuestion.getPoints() : 0);} else {QuizResponse quizResponse = new QuizResponse();quizResponse.setAnswerUuid(answer.getUuid());quizResponse.setQuestionUuid(mQuestion.getUuid());quizResponse.setQuizUuid(mQuestion.getQuizUuid());quizResponse.setValue(0);quizResponse.setPoints(answer.getCorrect().equalsIgnoreCase("y") ? mQuestion.getPoints() : 0);mQuizResponses.add(quizResponse);}notifyDataSetChanged();}});}}public void resetSelection(){selected = -1;}// convenience method for getting data at click positionpublic Answer getItem(int id) {return mAnswers.get(id);}}