Proyectos de Subversion Android Microlearning

Rev

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