Proyectos de Subversion Android Microlearning - Inconcert

Rev

Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
14 gabriel 1
package com.cesams.twogetskills.inconcert.adapter;
2
 
3
 
4
import android.content.Context;
5
import android.graphics.Color;
6
import android.util.Log;
7
import android.view.LayoutInflater;
8
import android.view.View;
9
import android.view.ViewGroup;
10
import android.widget.Button;
11
import android.widget.ImageView;
12
import android.widget.RatingBar;
13
import android.widget.TextView;
14
 
15
import androidx.annotation.NonNull;
16
import androidx.cardview.widget.CardView;
17
import androidx.constraintlayout.widget.ConstraintLayout;
18
import androidx.recyclerview.widget.RecyclerView;
19
 
20
import com.bumptech.glide.Glide;
21
import com.bumptech.glide.load.engine.DiskCacheStrategy;
22
import com.bumptech.glide.load.model.GlideUrl;
23
import com.bumptech.glide.load.model.LazyHeaders;
24
import com.bumptech.glide.request.RequestOptions;
25
import com.cesams.twogetskills.inconcert.Constants;
26
import com.cesams.twogetskills.inconcert.R;
27
import com.cesams.twogetskills.inconcert.library.MD5;
28
import com.cesams.twogetskills.inconcert.skeleton.ITwoGetSkills;
29
 
30
import java.text.ParseException;
31
import java.text.SimpleDateFormat;
32
import java.util.ArrayList;
33
import java.util.Calendar;
34
import java.util.Date;
35
import java.util.HashMap;
36
import java.util.Random;
37
import java.util.TimeZone;
38
 
39
public class CommentListViewAdapter extends RecyclerView.Adapter<CommentListViewAdapter.MyViewHolder> {
40
 
41
    private ArrayList<HashMap<String, String>> mDataSet;
42
 
43
    private ClickListener clickListener;
44
    private View.OnFocusChangeListener focusChangeListener;
45
    private Context mContext;
46
    private ITwoGetSkills iTwoGetSkills;
47
 
48
    public CommentListViewAdapter(Context context, ArrayList<HashMap<String, String>> mDataSet) {
49
        this.mDataSet = mDataSet;
50
        this.mContext = context;
51
        this.iTwoGetSkills = (ITwoGetSkills) context;
52
    }
53
 
54
    @NonNull
55
    @Override
56
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
57
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_item, parent, false);
58
        return new MyViewHolder(v);
59
    }
60
 
61
    @Override
62
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
63
        HashMap<String, String> data = mDataSet.get(position);
64
        try {
65
            holder.bindData(data);
66
        } catch (ParseException e) {
67
            e.printStackTrace();
68
        }
69
    }
70
 
71
    @Override
72
    public int getItemCount() {
73
        return (mDataSet != null) ? mDataSet.size() : 0;
74
    }
75
 
76
    public String getItem(int position) {
77
        return (mDataSet != null) ? String.valueOf(mDataSet.get(position)) : null;
78
    }
79
 
80
    void setOnFocusChangeListener(View.OnFocusChangeListener focusChangeListener){
81
        this.focusChangeListener = focusChangeListener;
82
    }
83
 
84
 
85
 
86
    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
87
 
88
        private TextView user,body,fecha;
89
        private RatingBar estrellas;
90
        private ImageView foto;
91
        private CardView card;
92
 
93
 
94
        public MyViewHolder(@NonNull View itemView) {
95
            super(itemView);
96
 
97
            card = itemView.findViewById(R.id.card_notifi);
98
            user = itemView.findViewById(R.id.titlenotifi);
99
            body = itemView.findViewById(R.id.description);
100
            fecha = itemView.findViewById(R.id.textView24);
101
            estrellas = itemView.findViewById(R.id.ratingBar2);
102
            foto = itemView.findViewById(R.id.imageView);
103
 
104
 
105
            if (clickListener != null) {
106
                card.setFocusable(true);
107
                card.setOnClickListener(this);
108
 
109
 
110
            }
111
        }
112
 
113
        public void bindData(final HashMap<String, String> data) throws ParseException {
114
 
115
            data.entrySet();
116
            String userdata, bodydata,fechadata,ratingdata,fotodata;
117
 
118
            userdata= data.get("user");
119
            bodydata=data.get("body");
120
            fechadata=data.get("fecha");
121
            ratingdata=data.get("rating");
122
            fotodata=data.get("image");
123
 
124
            TimeZone timeZone = TimeZone.getTimeZone("UTC");
125
            Calendar calendar = Calendar.getInstance(timeZone);
126
            int created =  (int) (calendar.getTimeInMillis() / 1000);
127
            Random random = new Random(created);
128
            int rand = 1000 + random.nextInt(8999);
129
 
130
            String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
131
            String password =  iTwoGetSkills.getPreference().getPassword();
132
 
133
            String secret = MD5.generar(password + ':' +  created + ':' + rand);
134
 
135
            GlideUrl url = new GlideUrl(fotodata, new LazyHeaders.Builder()
136
                    .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
137
                    .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
138
                    .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
139
                    .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
140
                    .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
141
                    .build());
142
 
143
            RequestOptions options = new RequestOptions()
144
                    .diskCacheStrategy(DiskCacheStrategy.ALL);
145
 
146
            Glide.with(mContext).load(url)
147
                    .thumbnail()
148
                    .apply(options)
149
                    .into(foto);
150
 
151
 
152
 
153
            user.setText(userdata);
154
            body.setText(bodydata);
155
            SimpleDateFormat dateFormatOfStringInDB = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);
156
            Date d1 = dateFormatOfStringInDB.parse(fechadata);
157
            SimpleDateFormat dateFormatYouWant = new SimpleDateFormat(Constants.FORMAT_DATE_TIME_12);
158
            String sCertDate = dateFormatYouWant.format(d1);
159
 
160
            fecha.setText(sCertDate);
161
            estrellas.setRating(Float.parseFloat(ratingdata));
162
 
163
        }
164
 
165
        @Override
166
        public void onClick(View v) {
167
            if (clickListener != null) {
168
                clickListener.onItemClick(getBindingAdapterPosition(), v);
169
            }
170
        }
171
 
172
 
173
 
174
    }
175
 
176
    // allows clicks events to be caught
177
    public void setClickListener(ClickListener itemClickListener) {
178
        this.clickListener = itemClickListener;
179
    }
180
 
181
    public interface ClickListener {
182
        void onItemClick(int position, View v);
183
    }
184
 
185
}