Proyectos de Subversion Android Microlearning - Inconcert

Rev

| Ultima modificación | Ver Log |

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