Proyectos de Subversion Android Microlearning

Rev

Rev 1 | Rev 5 | Ir a la última revisión | | 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.os.Build;
5
import android.text.Html;
6
import android.view.LayoutInflater;
7
import android.view.View;
8
import android.view.ViewGroup;
9
import android.widget.CheckBox;
4 gabriel 10
import android.widget.TextView;
11
 
1 efrain 12
import androidx.recyclerview.widget.RecyclerView;
13
import com.cesams.twogetskills.R;
14
import com.cesams.twogetskills.entity.Answer;
15
import com.cesams.twogetskills.entity.Question;
16
import com.cesams.twogetskills.pojo.QuizResponse;
17
 
18
import java.util.List;
19
import com.codesgood.views.JustifiedTextView;
20
 
21
public class QuizMultipleAnswerListViewAdapter extends RecyclerView.Adapter<QuizMultipleAnswerListViewAdapter.ViewHolder> {
22
    private final static String TAG = "C2GS - QuizMultipleAdapter";
23
    private Question mQuestion;
24
    private List<Answer> mAnswers;
25
    private List<QuizResponse> mQuizResponses;
26
    private LayoutInflater mInflater;
27
 
28
    // data is passed into the constructor
29
    public QuizMultipleAnswerListViewAdapter(Context context, Question question,  List<Answer> answers, List<QuizResponse> quizResponses) {
30
        this.mInflater = LayoutInflater.from(context);
31
        this.mQuestion = question;
32
        this.mAnswers = answers;
33
        this.mQuizResponses = quizResponses;
34
    }
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_multiple_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
        Answer mAnswer = mAnswers.get(position);
47
 
4 gabriel 48
        String contenido= Html.fromHtml(mAnswer.getText(), Html.FROM_HTML_MODE_COMPACT).toString();
49
        holder.mText.setText(contenido);
50
 
1 efrain 51
        for(int i = 0; i < mQuizResponses.size(); i++)
52
        {   if(mAnswer.getUuid().equals(mQuizResponses.get(i).getAnswerUuid())){
53
                holder.mCheckbox.setChecked(true);
54
            } else {
55
                holder.mCheckbox.setChecked(false);
56
            }
57
        }
58
    }
59
 
60
    // total number of rows
61
    @Override
62
    public int getItemCount() {
63
        return mAnswers.size();
64
    }
65
 
66
 
67
    // stores and recycles views as they are scrolled off screen
68
    public class ViewHolder extends RecyclerView.ViewHolder {
4 gabriel 69
        //JustifiedTextView mText;
70
        TextView mText;
1 efrain 71
        CheckBox mCheckbox;
72
 
73
        ViewHolder(View itemView) {
74
            super(itemView);
4 gabriel 75
            mText = itemView.findViewById(R.id.textView2);
1 efrain 76
            mCheckbox = (CheckBox) itemView.findViewById(R.id.fragment_quiz_multiple_answer_item_checkbox);
77
            mCheckbox.setOnClickListener(new View.OnClickListener() {
78
                @Override
79
                public void onClick(View view) {
80
                    int position = -1;
81
                    Answer answer = mAnswers.get(getAdapterPosition());
82
 
83
                    for(int i = 0; i < mQuizResponses.size(); i++)
84
                    {
85
                        if(answer.getUuid().equals(mQuizResponses.get(i).getAnswerUuid())){
86
                            position = i;
87
                            break;
88
                        }
89
                    }
90
 
91
                    if(position > -1) {
92
                        mQuizResponses.remove(position);
93
                    }
94
 
95
                    if( mCheckbox.isChecked()) {
96
 
97
                        QuizResponse quizResponse = new QuizResponse();
98
                        quizResponse.setAnswerUuid(answer.getUuid());
99
                        quizResponse.setQuestionUuid(mQuestion.getUuid());
100
                        quizResponse.setQuizUuid(mQuestion.getQuizUuid());
101
                        quizResponse.setCorrect(answer.getCorrect());
102
                        quizResponse.setPoints(answer.getCorrect().equalsIgnoreCase("y") ? answer.getPoints() : 0);
103
                        quizResponse.setValue(0);
104
                        mQuizResponses.add(quizResponse);
105
 
106
                    }
107
                }
108
            });
109
        }
110
 
111
 
112
    }
113
 
114
    // convenience method for getting data at click position
115
    public Answer getItem(int id) {
116
        return mAnswers.get(id);
117
    }
118
 
119
 
120
}