Proyectos de Subversion Android Microlearning

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
package com.cesams.twogetskills.adapter;
2
 
3
import android.content.Context;
5 gabriel 4
import android.text.Html;
1 efrain 5
import android.view.LayoutInflater;
6
import android.view.View;
7
import android.view.ViewGroup;
8
import android.widget.RadioButton;
9
import android.widget.TextView;
10
 
11
import androidx.recyclerview.widget.RecyclerView;
12
 
13
import com.cesams.twogetskills.Constants;
14
import com.cesams.twogetskills.R;
15
import com.cesams.twogetskills.pojo.AnswerRange;
16
import com.cesams.twogetskills.entity.Question;
17
import com.cesams.twogetskills.pojo.QuizResponse;
18
 
19
import java.util.List;
20
 
21
public class QuizRangeSimpleAnswerListViewAdapter extends RecyclerView.Adapter<QuizRangeSimpleAnswerListViewAdapter.ViewHolder> {
22
    private final static String TAG = "C2GS - QuizRangeAdapter";
23
    private Question mQuestion;
24
    private List<AnswerRange> mAnswers;
25
    private List<QuizResponse> mQuizResponses;
26
    private LayoutInflater mInflater;
27
    private int selected = -1;
28
 
29
    // data is passed into the constructor
30
    public QuizRangeSimpleAnswerListViewAdapter(Context context, Question question, List<AnswerRange> answers,  List<QuizResponse> quizResponses) {
31
        this.mInflater = LayoutInflater.from(context);
32
        this.mQuestion = question;
33
        this.mAnswers = answers;
34
        this.mQuizResponses = quizResponses;
35
    }
36
    // inflates the row layout from xml when needed
37
    @Override
38
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
39
        View view = mInflater.inflate(R.layout.fragment_quiz_range_simple_answer_item, parent, false);
40
        return new ViewHolder(view);
41
    }
42
 
43
    // binds the data to the TextView in each row
44
    @Override
45
    public void onBindViewHolder(ViewHolder holder, int position) {
46
        AnswerRange  mAnswer = mAnswers.get(position);
5 gabriel 47
        holder.mText.setText(Html.fromHtml(mAnswer.getText(), Html.FROM_HTML_MODE_COMPACT));
1 efrain 48
 
5 gabriel 49
        holder.mRadioButton.setChecked(position == selected);
1 efrain 50
 
51
    }
52
 
53
    public void resetSelection()
54
    {
55
        selected = -1;
56
    }
57
 
58
    // total number of rows
59
    @Override
60
    public int getItemCount() {
61
        return mAnswers.size();
62
    }
63
 
64
 
65
    // stores and recycles views as they are scrolled off screen
66
    public class ViewHolder extends RecyclerView.ViewHolder  {
67
        TextView  mText;
68
        RadioButton mRadioButton;
69
 
70
        ViewHolder(View itemView) {
71
            super(itemView);
72
            mText = (TextView) itemView.findViewById(R.id.fragment_quiz_range_simple_answer_item_textview);
73
            mRadioButton = (RadioButton) itemView.findViewById(R.id.fragment_quiz_range_simple_answer_item_radio);
74
            mRadioButton.setOnClickListener(new View.OnClickListener() {
75
                @Override
76
                public void onClick(View view) {
77
                    selected = getAdapterPosition();
78
                    AnswerRange answer = mAnswers.get(selected);
79
 
80
                    int position = -1;
81
                    for(int i = 0; i < mQuizResponses.size(); i++)
82
                    {
83
                        if(mQuestion.getUuid().equals(mQuizResponses.get(i).getQuestionUuid())){
84
                            position = i;
85
                            break;
86
 
87
                        }
88
                    }
89
 
90
                    int div = 1;
91
                    if(mQuestion.getType().equals(Constants.QUESTION_TYPE_RANGE_1_5 )) {
92
                        div = 5;
93
                    } else if(mQuestion.getType().equals(Constants.QUESTION_TYPE_RANGE_1_6 )) {
94
                        div = 6;
95
                    } else if(mQuestion.getType().equals(Constants.QUESTION_TYPE_RANGE_1_10 )) {
96
                        div = 10;
97
                    } else {
98
                        div = 1;
99
                    }
100
                    int points = (mQuestion.getPoints() / div) * answer.getValue();
101
 
102
 
103
                    if(position > -1) {
104
                        mQuizResponses.remove(position);
105
                    }
106
                    QuizResponse quizResponse = new QuizResponse();
107
                    quizResponse.setQuestionUuid(mQuestion.getUuid());
108
                    quizResponse.setQuizUuid(mQuestion.getQuizUuid());
109
                    quizResponse.setValue(answer.getValue());
110
                    quizResponse.setPoints(points);
111
                    mQuizResponses.add(quizResponse);
112
 
113
 
114
                    notifyDataSetChanged();
115
 
116
 
117
 
118
                }
119
            });
120
        }
121
 
122
    }
123
 
124
 
125
 
126
 
127
    // convenience method for getting data at click position
128
    public AnswerRange getItem(int id) {
129
        return mAnswers.get(id);
130
    }
131
}