Rev 1 | Rev 5 | 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.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;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 QuizMultipleAnswerListViewAdapter extends RecyclerView.Adapter<QuizMultipleAnswerListViewAdapter.ViewHolder> {private final static String TAG = "C2GS - QuizMultipleAdapter";private Question mQuestion;private List<Answer> mAnswers;private List<QuizResponse> mQuizResponses;private LayoutInflater mInflater;// data is passed into the constructorpublic QuizMultipleAnswerListViewAdapter(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_multiple_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);String contenido= Html.fromHtml(mAnswer.getText(), Html.FROM_HTML_MODE_COMPACT).toString();holder.mText.setText(contenido);for(int i = 0; i < mQuizResponses.size(); i++){ if(mAnswer.getUuid().equals(mQuizResponses.get(i).getAnswerUuid())){holder.mCheckbox.setChecked(true);} else {holder.mCheckbox.setChecked(false);}}}// 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;CheckBox mCheckbox;ViewHolder(View itemView) {super(itemView);mText = itemView.findViewById(R.id.textView2);mCheckbox = (CheckBox) itemView.findViewById(R.id.fragment_quiz_multiple_answer_item_checkbox);mCheckbox.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {int position = -1;Answer answer = mAnswers.get(getAdapterPosition());for(int i = 0; i < mQuizResponses.size(); i++){if(answer.getUuid().equals(mQuizResponses.get(i).getAnswerUuid())){position = i;break;}}if(position > -1) {mQuizResponses.remove(position);}if( mCheckbox.isChecked()) {QuizResponse quizResponse = new QuizResponse();quizResponse.setAnswerUuid(answer.getUuid());quizResponse.setQuestionUuid(mQuestion.getUuid());quizResponse.setQuizUuid(mQuestion.getQuizUuid());quizResponse.setCorrect(answer.getCorrect());quizResponse.setPoints(answer.getCorrect().equalsIgnoreCase("y") ? answer.getPoints() : 0);quizResponse.setValue(0);mQuizResponses.add(quizResponse);}}});}}// convenience method for getting data at click positionpublic Answer getItem(int id) {return mAnswers.get(id);}}