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