Proyectos de Subversion Android Microlearning - Nuevo Interface

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5 gabriel 1
package com.cesams.twogetskills.adapter;
2
 
3
 
4
import android.content.Context;
11 gabriel 5
import android.text.Html;
6
import android.util.Log;
5 gabriel 7
import android.view.LayoutInflater;
8
import android.view.View;
9
import android.view.ViewGroup;
11 gabriel 10
import android.widget.AdapterView;
11
import android.widget.Button;
5 gabriel 12
import android.widget.ImageView;
13
import android.widget.TextView;
11 gabriel 14
import android.widget.Toast;
5 gabriel 15
 
16
import androidx.annotation.NonNull;
23 gabriel 17
import androidx.cardview.widget.CardView;
17 gabriel 18
import androidx.lifecycle.ViewModelProvider;
5 gabriel 19
import androidx.recyclerview.widget.RecyclerView;
20
 
21
import com.bumptech.glide.Glide;
22
import com.bumptech.glide.load.engine.DiskCacheStrategy;
23
import com.bumptech.glide.load.model.GlideUrl;
24
import com.bumptech.glide.load.model.LazyHeaders;
25
import com.bumptech.glide.request.RequestOptions;
26
import com.cesams.twogetskills.Constants;
27
import com.cesams.twogetskills.R;
28
import com.cesams.twogetskills.library.MD5;
29
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
17 gabriel 30
import com.cesams.twogetskills.viewdata.SlideRefreshUIViewData;
31
import com.cesams.twogetskills.viewmodel.SlideRefreshUIViewModel;
5 gabriel 32
 
33
import java.util.ArrayList;
34
import java.util.Calendar;
35
import java.util.HashMap;
36
import java.util.Random;
37
import java.util.TimeZone;
38
 
39
public class TabsCapsulesAdapter extends RecyclerView.Adapter<TabsCapsulesAdapter.MyViewHolder> {
40
 
41
    private ArrayList<HashMap<String, String>> mDataSet;
42
 
43
    private Context mContext;
44
    private ITwoGetSkills iTwoGetSkills;
11 gabriel 45
    private ClickListener clickListener;
5 gabriel 46
 
11 gabriel 47
 
5 gabriel 48
    public TabsCapsulesAdapter(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.capsuleitemcategory, parent, false);
11 gabriel 58
 
59
        MyViewHolder viewHolder = new MyViewHolder(v);
60
 
61
        return viewHolder;
5 gabriel 62
    }
63
 
64
    @Override
65
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
66
        HashMap<String, String> data = mDataSet.get(position);
67
        holder.bindData(data);
68
    }
69
 
70
    @Override
71
    public int getItemCount() {
72
        return (mDataSet != null) ? mDataSet.size() : 0;
73
    }
74
 
17 gabriel 75
   /* void setOnItemClickListener(ClickListener clickListener) {
5 gabriel 76
        this.clickListener = clickListener;
77
    }
17 gabriel 78
*/
5 gabriel 79
 
80
    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
81
 
12 gabriel 82
        private TextView fecha,pendientes,titulo;
23 gabriel 83
        private CardView card;
11 gabriel 84
        private Button entrar;
5 gabriel 85
        private ImageView imagen;
86
 
87
 
88
        public MyViewHolder(@NonNull View itemView) {
89
            super(itemView);
11 gabriel 90
            titulo = itemView.findViewById(R.id.description);
5 gabriel 91
            fecha = itemView.findViewById(R.id.progressview);
92
            imagen = itemView.findViewById(R.id.imagelist);
11 gabriel 93
            entrar = itemView.findViewById(R.id.button);
12 gabriel 94
            pendientes = itemView.findViewById(R.id.pendientes);
23 gabriel 95
            card = itemView.findViewById(R.id.card_view);
12 gabriel 96
 
5 gabriel 97
            if (clickListener != null) {
23 gabriel 98
                card.setFocusable(true);
99
                card.setOnClickListener(this);
17 gabriel 100
                entrar.setFocusable(true);
101
                entrar.setOnClickListener(this);
5 gabriel 102
            }
103
        }
104
 
105
        public void bindData(final HashMap<String, String> data) {
106
 
107
            data.entrySet();
108
 
12 gabriel 109
            String view, total,  nombre, slides;
5 gabriel 110
 
11 gabriel 111
            view= data.get("description");
5 gabriel 112
            total=data.get("total");
113
            nombre = data.get("nombre");
12 gabriel 114
            slides= data.get("view");
5 gabriel 115
 
116
            if(nombre != null)
117
            {
118
                titulo.setText(nombre);
119
 
120
            }
121
 
11 gabriel 122
            if(view != null )
5 gabriel 123
            {
11 gabriel 124
                fecha.setText((Html.fromHtml(view)));
5 gabriel 125
            }
126
 
16 gabriel 127
            if(total != null || slides != null)
12 gabriel 128
            {
129
                pendientes.setText(slides+" / "+total+" items");
130
            }
16 gabriel 131
            else
132
            {
133
                pendientes.setText("");
134
            }
12 gabriel 135
 
5 gabriel 136
            String imagens;
137
            imagens=data.get("imagen");
138
 
139
 
140
            //Verificamos que las imagenes no esten vacias
141
            if (imagens != null && !imagens.equals("")) {
142
 
143
                TimeZone timeZone = TimeZone.getTimeZone("UTC");
144
                Calendar calendar = Calendar.getInstance(timeZone);
145
                TimeZone tz = calendar.getTimeZone();
146
                int created =  (int) (calendar.getTimeInMillis() / 1000);
147
 
148
                Random random = new Random(created);
149
                int rand = 1000 + random.nextInt(8999);
150
 
151
 
152
                String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
153
                String password =  iTwoGetSkills.getPreference().getPassword();
154
 
155
 
156
 
157
                String secret = MD5.generar(password + ':' +  created + ':' + rand);
158
                GlideUrl url = new GlideUrl(imagens, new LazyHeaders.Builder()
159
                        .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
160
                        .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
161
                        .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
162
                        .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
163
                        .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
164
                        .build());
165
 
166
                RequestOptions options = new RequestOptions()
167
                        .diskCacheStrategy(DiskCacheStrategy.ALL);
168
 
169
                Glide.with(mContext).load(url)
170
                        .thumbnail()
171
                        .apply(options)
172
                        .into(imagen);
173
            }
174
 
175
        }
176
 
177
        @Override
178
        public void onClick(View v) {
179
            if (clickListener != null) {
17 gabriel 180
                clickListener.onItemClick(getAbsoluteAdapterPosition(), v);
5 gabriel 181
            }
182
        }
183
 
184
 
11 gabriel 185
}
5 gabriel 186
 
17 gabriel 187
    // allows clicks events to be caught
188
    public void setClickListener(ClickListener itemClickListener) {
189
        this.clickListener = itemClickListener;
190
    }
191
 
5 gabriel 192
    public interface ClickListener {
193
        void onItemClick(int position, View v);
11 gabriel 194
    }}