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.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.Constants;import com.cesams.twogetskills.R;import com.cesams.twogetskills.pojo.AnswerRange;import com.cesams.twogetskills.entity.Question;import com.cesams.twogetskills.pojo.QuizResponse;import java.util.List;public class QuizRangeSimpleAnswerListViewAdapter extends RecyclerView.Adapter<QuizRangeSimpleAnswerListViewAdapter.ViewHolder> {private final static String TAG = "C2GS - QuizRangeAdapter";private Question mQuestion;private List<AnswerRange> mAnswers;private List<QuizResponse> mQuizResponses;private LayoutInflater mInflater;private int selected = -1;// data is passed into the constructorpublic QuizRangeSimpleAnswerListViewAdapter(Context context, Question question, List<AnswerRange> 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_range_simple_answer_item, parent, false);return new ViewHolder(view);}// binds the data to the TextView in each row@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {AnswerRange mAnswer = mAnswers.get(position);holder.mText.setText(mAnswer.getText());if(position == selected) {holder.mRadioButton.setChecked(true);} else {holder.mRadioButton.setChecked(false);}}public void resetSelection(){selected = -1;}// 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 {TextView mText;RadioButton mRadioButton;ViewHolder(View itemView) {super(itemView);mText = (TextView) itemView.findViewById(R.id.fragment_quiz_range_simple_answer_item_textview);mRadioButton = (RadioButton) itemView.findViewById(R.id.fragment_quiz_range_simple_answer_item_radio);mRadioButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {selected = getAdapterPosition();AnswerRange 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;}}int div = 1;if(mQuestion.getType().equals(Constants.QUESTION_TYPE_RANGE_1_5 )) {div = 5;} else if(mQuestion.getType().equals(Constants.QUESTION_TYPE_RANGE_1_6 )) {div = 6;} else if(mQuestion.getType().equals(Constants.QUESTION_TYPE_RANGE_1_10 )) {div = 10;} else {div = 1;}int points = (mQuestion.getPoints() / div) * answer.getValue();if(position > -1) {mQuizResponses.remove(position);}QuizResponse quizResponse = new QuizResponse();quizResponse.setQuestionUuid(mQuestion.getUuid());quizResponse.setQuizUuid(mQuestion.getQuizUuid());quizResponse.setValue(answer.getValue());quizResponse.setPoints(points);mQuizResponses.add(quizResponse);notifyDataSetChanged();}});}}// convenience method for getting data at click positionpublic AnswerRange getItem(int id) {return mAnswers.get(id);}}