Proyectos de Subversion Android Microlearning - Nuevo Interface

Rev

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