package com.odc.beachodc.adapters; import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Typeface; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.odc.beachodc.R; import com.odc.beachodc.db.models.Playa; import com.odc.beachodc.utilities.AnimateFirstDisplayListener; import com.odc.beachodc.utilities.Geo; import com.odc.beachodc.utilities.Utilities; import com.odc.beachodc.utilities.ValidacionPlaya; import java.lang.ref.WeakReference; import java.text.DecimalFormat; import java.util.Collections; import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * Created by Paco on 09/07/2014. */ public class PlayasAdapter extends BaseAdapter { protected Activity activity; protected List<Playa> items; protected boolean isCheckins; protected boolean isSearchByLocation; protected Double latitudO, longitudO; ViewHolder viewHolder; private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener(); public PlayasAdapter(Activity activity, List<Playa> items, boolean checkins) { this.activity = activity; this.items = items; if (checkins) this.isCheckins=true; this.isSearchByLocation = false; viewHolder = new ViewHolder(); } public PlayasAdapter(Activity activity, List<Playa> items, Double latitudO, Double longitudO) { this.activity = activity; this.items = items; this.isCheckins=false; this.isSearchByLocation = true; this.latitudO = latitudO; this.longitudO = longitudO; viewHolder = new ViewHolder(); } public PlayasAdapter(Activity activity, List<Playa> items) { this.activity = activity; this.items = items; this.isCheckins=false; this.isSearchByLocation = false; viewHolder = new ViewHolder(); } @Override public int getCount() { return (items == null) ? 0 : items.size(); } @Override public Object getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View vi=convertView; if (Utilities.imageLoader == null){ Utilities.setImageLoader(activity); } if(convertView == null) { viewHolder = new ViewHolder(); LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); vi = inflater.inflate(R.layout.item_playa_list, null); viewHolder.banderaazulIV = (ImageView) vi.findViewById(R.id.banderaAzulImage); viewHolder.dificultadaccesoIV = (ImageView) vi.findViewById(R.id.dificultadAccesoImage); viewHolder.limpiezaIV = (ImageView) vi.findViewById(R.id.limpiezaImage); viewHolder.tipoarenaIV = (ImageView) vi.findViewById(R.id.tipoArenaImage); viewHolder.rompeolasIV = (ImageView) vi.findViewById(R.id.rompeolasImage); viewHolder.hamacasIV = (ImageView) vi.findViewById(R.id.hamacasImage); viewHolder.sombrillasIV = (ImageView) vi.findViewById(R.id.sombrillasImage); viewHolder.duchasIV = (ImageView) vi.findViewById(R.id.duchasImage); viewHolder.chiringuitosIV = (ImageView) vi.findViewById(R.id.chiringuitosImage); viewHolder.socorristaIV = (ImageView) vi.findViewById(R.id.socorristaImage); viewHolder.perrosIV = (ImageView) vi.findViewById(R.id.perrosImage); viewHolder.nudistaIV = (ImageView) vi.findViewById(R.id.nudistaImage); viewHolder.cerradaIV = (ImageView) vi.findViewById(R.id.cerradaImage); viewHolder.distanciaTV = (TextView) vi.findViewById(R.id.distanciaTV); viewHolder.nombreTV = (TextView) vi.findViewById(R.id.nombreTV); viewHolder.valoracionTV = (TextView) vi.findViewById(R.id.valoracionTV); viewHolder.webcam = (ImageView) vi.findViewById(R.id.webcam_icon); viewHolder.starsRL = (RelativeLayout) vi.findViewById(R.id.starsRL); viewHolder.v1 = (ImageView) vi.findViewById(R.id.v1); viewHolder.v2 = (ImageView) vi.findViewById(R.id.v2); viewHolder.v3 = (ImageView) vi.findViewById(R.id.v3); viewHolder.v4 = (ImageView) vi.findViewById(R.id.v4); viewHolder.v5 = (ImageView) vi.findViewById(R.id.v5); vi.setTag(viewHolder); } else { viewHolder = (ViewHolder) vi.getTag(); } Playa playa = items.get(position); // Trabajar con la UI, que es 'vi' Typeface tf = Typeface.createFromAsset(activity.getAssets(), "fonts/aSongforJenniferBold.ttf"); viewHolder.nombreTV.setTypeface(tf); viewHolder.nombreTV.setText(playa.nombre); if ((playa.webcamURL != null) && (!playa.webcamURL.equals(""))) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.webcam), viewHolder.webcam, animateFirstListener); viewHolder.webcam.setVisibility(View.VISIBLE); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.RIGHT_OF, R.id.webcam_icon); lp.addRule(RelativeLayout.LEFT_OF, R.id.distanciaTV); lp.setMargins(5, 5, 5, 0); viewHolder.nombreTV.setLayoutParams(lp); } else{ viewHolder.webcam.setVisibility(View.GONE); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.LEFT_OF, R.id.distanciaTV); lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT); lp.setMargins(15, 5, 5, 0); viewHolder.nombreTV.setLayoutParams(lp); } tf = Typeface.createFromAsset(activity.getAssets(), "fonts/aSongforJennifer.ttf"); if (isCheckins) { viewHolder.starsRL.setVisibility(View.GONE); //TextView titleCheckinsTV = (TextView) vi.findViewById(R.id.title_checkins); //titleCheckinsTV.setVisibility(View.VISIBLE); //titleCheckinsTV.setTypeface(tf); // TODO: Calcular el nĂºmero de checkins que haya hecho el usuario sobre esa playa //TextView checkinsTV = (TextView) vi.findViewById(R.id.checkinsTV); //checkinsTV.setVisibility(View.VISIBLE); //checkinsTV.setTypeface(tf); //int totalCheckins = 12; //checkinsTV.setText(String.valueOf(totalCheckins)); } else { viewHolder.valoracionTV.setTypeface(tf); if (playa.valoracion != null) { setValoracion(playa.valoracion.intValue()); DecimalFormat df = new DecimalFormat("#.0"); viewHolder.valoracionTV.setText(df.format(playa.valoracion).replace(".", ",")); if (playa.valoracion == 0){ viewHolder.valoracionTV.setText("-,-"); viewHolder.valoracionTV.setTextColor(Color.rgb(155, 155, 155)); }else if (playa.valoracion < 3) { viewHolder.valoracionTV.setTextColor(Color.rgb(189, 22, 13)); } else if (playa.valoracion < 4) { viewHolder.valoracionTV.setTextColor(Color.rgb(255, 149, 20)); } else if (playa.valoracion < 5) { viewHolder.valoracionTV.setTextColor(Color.rgb(238, 180, 0)); } if (playa.valoracion == 5) { viewHolder.valoracionTV.setTextColor(Color.rgb(0, 121, 0)); } } } viewHolder.distanciaTV.setTypeface(tf); if (isCheckins) viewHolder.distanciaTV.setText(Utilities.formatFechaNotHour(playa.checkin)); else { try { if (isSearchByLocation) { viewHolder.distanciaTV.setText(Geo.getDistanceToPrint(activity, this.latitudO, this.longitudO, playa.latitud, playa.longitud)); } else { viewHolder.distanciaTV.setText(Geo.getDistanceToPrint(activity, playa.latitud, playa.longitud)); } } catch (Exception e){ viewHolder.distanciaTV.setText(Geo.getDistanceToPrint(activity, playa.latitud, playa.longitud)); } } setIconsExtraInfo(playa); return vi; } private void setIconsExtraInfo (Playa playa){ if ((playa.banderaazul != null) && (playa.banderaazul)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.bandera_azul_si), viewHolder.banderaazulIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.bandera_azul_no), viewHolder.banderaazulIV, animateFirstListener); } if (playa.dificultadacceso != null){ if (playa.dificultadacceso.equals("media")){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.dificultad_media), viewHolder.dificultadaccesoIV, animateFirstListener); } else if (playa.dificultadacceso.equals("extrema")){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.dificultad_alta), viewHolder.dificultadaccesoIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.dificultad_baja), viewHolder.dificultadaccesoIV, animateFirstListener); } } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.dificultad_baja), viewHolder.dificultadaccesoIV, animateFirstListener); } if (playa.limpieza != null){ if (playa.limpieza.equals("sucia")){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.playa_sucia), viewHolder.limpiezaIV, animateFirstListener); } else if (playa.limpieza.equals("mucho")){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.playa_limpia), viewHolder.limpiezaIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.playa_medio_sucia), viewHolder.limpiezaIV, animateFirstListener); } } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.playa_medio_sucia), viewHolder.limpiezaIV, animateFirstListener); } if (playa.tipoarena != null){ if (playa.tipoarena.equals("blanca")){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.arena_blanca), viewHolder.tipoarenaIV, animateFirstListener); } else if (playa.tipoarena.equals("rocas")){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.arena_rocas), viewHolder.tipoarenaIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.arena_negra), viewHolder.tipoarenaIV, animateFirstListener); } } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.arena_negra), viewHolder.tipoarenaIV, animateFirstListener); } if ((playa.rompeolas != null) && (playa.rompeolas)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.rompeolas_si), viewHolder.rompeolasIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.rompeolas_no), viewHolder.rompeolasIV, animateFirstListener); } if ((playa.hamacas != null) && (playa.hamacas)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.hamacas_si), viewHolder.hamacasIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.hamacas_no), viewHolder.hamacasIV, animateFirstListener); } if ((playa.sombrillas != null) && (playa.sombrillas)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.sombrillas_si), viewHolder.sombrillasIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.sombrillas_no), viewHolder.sombrillasIV, animateFirstListener); } if ((playa.chiringuitos != null) && (playa.chiringuitos)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.chiringuito_si), viewHolder.chiringuitosIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.chiringuito_no), viewHolder.chiringuitosIV, animateFirstListener); } if ((playa.duchas != null) && (playa.duchas)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.duchas_si), viewHolder.duchasIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.duchas_no), viewHolder.duchasIV, animateFirstListener); } if ((playa.socorrista != null) && (playa.socorrista)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.socorrista_si), viewHolder.socorristaIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.socorrista_no), viewHolder.socorristaIV, animateFirstListener); } if ((playa.perros != null) && (playa.perros)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.perros_si), viewHolder.perrosIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.perros_no), viewHolder.perrosIV, animateFirstListener); } if ((playa.nudista != null) && (playa.nudista)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.nudista_si), viewHolder.nudistaIV, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.nudista_no), viewHolder.nudistaIV, animateFirstListener); } if (!isCheckins) { if ((playa.cerrada != null) && (playa.cerrada)) { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.cerrada), viewHolder.cerradaIV, animateFirstListener); viewHolder.cerradaIV.setVisibility(View.VISIBLE); } else { viewHolder.cerradaIV.setVisibility(View.GONE); } } else { viewHolder.cerradaIV.setVisibility(View.GONE); } } public void setValoracion(int valoracion){ if (valoracion == 1){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v1, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v2, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v3, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v4, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v5, animateFirstListener); } else if (valoracion == 2){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v1, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v2, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v3, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v4, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v5, animateFirstListener); } else if (valoracion == 3){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v1, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v2, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v3, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v4, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v5, animateFirstListener); } else if (valoracion == 4){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v1, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v2, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v3, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v4, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v5, animateFirstListener); } else if (valoracion == 5){ Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v1, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v2, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v3, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v4, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_on), viewHolder.v5, animateFirstListener); } else { Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v1, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v2, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v3, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v4, animateFirstListener); Utilities.imageLoader.displayImage(Utilities.getURIDrawable(R.drawable.star_off), viewHolder.v5, animateFirstListener); } } static class ViewHolder { ImageView banderaazulIV; ImageView dificultadaccesoIV; ImageView limpiezaIV; ImageView tipoarenaIV; ImageView rompeolasIV; ImageView hamacasIV; ImageView sombrillasIV; ImageView duchasIV; ImageView chiringuitosIV; ImageView perrosIV; ImageView nudistaIV; ImageView cerradaIV; ImageView socorristaIV; TextView nombreTV; TextView distanciaTV; TextView valoracionTV; ImageView webcam; ImageView v1, v2, v3, v4, v5; RelativeLayout starsRL; } }