Rev 1 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
package com.cesams.twogetskills.adapter;
import android.content.Context;
import android.text.Html;
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 constructor
public 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
@Override
public 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
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
AnswerRange mAnswer = mAnswers.get(position);
holder.mText.setText(Html.fromHtml(mAnswer.getText(), Html.FROM_HTML_MODE_COMPACT));
holder.mRadioButton.setChecked(position == selected);
}
public void resetSelection()
{
selected = -1;
}
// total number of rows
@Override
public int getItemCount() {
return mAnswers.size();
}
// stores and recycles views as they are scrolled off screen
public 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() {
@Override
public 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 position
public AnswerRange getItem(int id) {
return mAnswers.get(id);
}
}