Proyectos de Subversion Android Microlearning

Rev

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