Proyectos de Subversion Android Microlearning - Inconcert

Rev

Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

package com.cesams.twogetskills.inconcert.adapter;


import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
import com.bumptech.glide.request.RequestOptions;
import com.cesams.twogetskills.inconcert.Constants;
import com.cesams.twogetskills.inconcert.R;
import com.cesams.twogetskills.inconcert.library.MD5;
import com.cesams.twogetskills.inconcert.skeleton.ITwoGetSkills;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Random;
import java.util.TimeZone;

public class CommentListViewAdapter extends RecyclerView.Adapter<CommentListViewAdapter.MyViewHolder> {

    private ArrayList<HashMap<String, String>> mDataSet;

    private ClickListener clickListener;
    private View.OnFocusChangeListener focusChangeListener;
    private Context mContext;
    private ITwoGetSkills iTwoGetSkills;

    public CommentListViewAdapter(Context context, ArrayList<HashMap<String, String>> mDataSet) {
        this.mDataSet = mDataSet;
        this.mContext = context;
        this.iTwoGetSkills = (ITwoGetSkills) context;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_item, parent, false);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        HashMap<String, String> data = mDataSet.get(position);
        try {
            holder.bindData(data);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    @Override
    public int getItemCount() {
        return (mDataSet != null) ? mDataSet.size() : 0;
    }

    public String getItem(int position) {
        return (mDataSet != null) ? String.valueOf(mDataSet.get(position)) : null;
    }

    void setOnFocusChangeListener(View.OnFocusChangeListener focusChangeListener){
        this.focusChangeListener = focusChangeListener;
    }



    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private TextView user,body,fecha;
        private RatingBar estrellas;
        private ImageView foto;
        private CardView card;


        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            card = itemView.findViewById(R.id.card_notifi);
            user = itemView.findViewById(R.id.titlenotifi);
            body = itemView.findViewById(R.id.description);
            fecha = itemView.findViewById(R.id.textView24);
            estrellas = itemView.findViewById(R.id.ratingBar2);
            foto = itemView.findViewById(R.id.imageView);


            if (clickListener != null) {
                card.setFocusable(true);
                card.setOnClickListener(this);


            }
        }

        public void bindData(final HashMap<String, String> data) throws ParseException {

            data.entrySet();
            String userdata, bodydata,fechadata,ratingdata,fotodata;

            userdata= data.get("user");
            bodydata=data.get("body");
            fechadata=data.get("fecha");
            ratingdata=data.get("rating");
            fotodata=data.get("image");

            TimeZone timeZone = TimeZone.getTimeZone("UTC");
            Calendar calendar = Calendar.getInstance(timeZone);
            int created =  (int) (calendar.getTimeInMillis() / 1000);
            Random random = new Random(created);
            int rand = 1000 + random.nextInt(8999);

            String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
            String password =  iTwoGetSkills.getPreference().getPassword();

            String secret = MD5.generar(password + ':' +  created + ':' + rand);

            GlideUrl url = new GlideUrl(fotodata, new LazyHeaders.Builder()
                    .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
                    .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
                    .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
                    .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
                    .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
                    .build());

            RequestOptions options = new RequestOptions()
                    .diskCacheStrategy(DiskCacheStrategy.ALL);

            Glide.with(mContext).load(url)
                    .thumbnail()
                    .apply(options)
                    .into(foto);



            user.setText(userdata);
            body.setText(bodydata);
            SimpleDateFormat dateFormatOfStringInDB = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);
            Date d1 = dateFormatOfStringInDB.parse(fechadata);
            SimpleDateFormat dateFormatYouWant = new SimpleDateFormat(Constants.FORMAT_DATE_TIME_12);
            String sCertDate = dateFormatYouWant.format(d1);

            fecha.setText(sCertDate);
            estrellas.setRating(Float.parseFloat(ratingdata));

        }

        @Override
        public void onClick(View v) {
            if (clickListener != null) {
                clickListener.onItemClick(getBindingAdapterPosition(), v);
            }
        }



    }

    // allows clicks events to be caught
    public void setClickListener(ClickListener itemClickListener) {
        this.clickListener = itemClickListener;
    }

    public interface ClickListener {
        void onItemClick(int position, View v);
    }

}