package com.safemobile.adapters; import java.util.ArrayList; import java.util.Hashtable; import android.app.Activity; import android.content.Context; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.drawable.Drawable; 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.TextView; import com.safemobile.lib.R; import com.safemobile.lib.SM; import com.safemobile.lib.Vehicle; public class LiveGridViewAdapter extends BaseAdapter { private ArrayList listVehicle; private ArrayList displayedVehicles; public ArrayList disabledVehicles; private Activity activity; //public String time; //private int[] colors = new int[] { Color.parseColor("#FFFFFF"), Color.parseColor("#D2E4FC") }; private Hashtable hash = new Hashtable(); public LiveGridViewAdapter(Activity activity, ArrayList listVehicle, Context context, ArrayList displayedVehicles, ArrayList disabledVehicles) { super(); this.activity = activity; this.listVehicle = listVehicle; //this.time = time; this.displayedVehicles = displayedVehicles; this.disabledVehicles = disabledVehicles; } @Override public int getCount() { return listVehicle.size(); } @Override public Vehicle getItem(int position) { return listVehicle.get(position); } @Override public long getItemId(int position) { return 0; } public static class ViewHolder { public ImageView imgViewIcon, imgViewChecked; public TextView txtViewName; public LinearLayout layoutVehicle; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder view; LayoutInflater inflator = activity.getLayoutInflater(); if(convertView==null) { view = new ViewHolder(); convertView = inflator.inflate(R.layout.row_vehicle, null); view.imgViewIcon = (ImageView) convertView.findViewById(R.id.imageViewIcon); view.txtViewName = (TextView) convertView.findViewById(R.id.textViewName); view.imgViewChecked = (ImageView) convertView.findViewById(R.id.imageViewChecked); //view.linearLayoutChecked = (LinearLayout) convertView.findViewById(R.id.linearLayoutChecked); view.layoutVehicle = (LinearLayout) convertView.findViewById(R.id.layoutVehicle); convertView.setTag(view); } else { view = (ViewHolder) convertView.getTag(); } hash.put(position, convertView); view.imgViewIcon.setImageResource(listVehicle.get(position).getSmallIcon()); view.txtViewName.setText(listVehicle.get(position).name); // set color //int colorPos = position % colors.length; //view.layoutVehicle.setBackgroundColor(colors[colorPos]); switch(displayedVehicles.get(position) ? 1 : 0) { case 1: view.imgViewChecked.setImageResource(R.drawable.checked); break; case 0: view.imgViewChecked.setImageResource(R.drawable.unchecked); break; } switch(disabledVehicles.get(position) ? 1 : 0) { case 1: view.layoutVehicle.setBackgroundColor(0xffcccccc); //view.imgViewIcon.setImageDrawable(convertToGrayscale(activity.getResources().getDrawable(listVehicle.get(position).getSmallIcon()))); break; case 0: view.layoutVehicle.setBackgroundColor(0xffFFFFFF); //view.imgViewIcon.setImageResource(listVehicle.get(position).getSmallIcon()); break; } return convertView; } public void changeDisplayed(int position, int status) { SM.Debug("DISABLE ON START: " + position + " | " + (disabledVehicles.get(position) ? "true": "false")); SM.Debug("DISPLAY ON START: " + position + " | " + (displayedVehicles.get(position) ? "true": "false")); // if vehicle is enable if(status == 1) { // change icon //view.imgViewChecked.setImageResource(R.drawable.unchecked); // change in list disabledVehicles.remove(position); disabledVehicles.add(position, false); } else if(status == 0) { // change icon //view.imgViewChecked.setImageResource(R.drawable.checked); // change in list disabledVehicles.remove(position); disabledVehicles.add(position, true); } // change displayed else if (status == -1) { // check selected position displayedVehicles.remove(position); displayedVehicles.add(position, true); } ViewHolder view = new ViewHolder(); LayoutInflater inflator = activity.getLayoutInflater(); View convertView = null; if(convertView==null) { convertView = inflator.inflate(R.layout.row_vehicle, null); try { view.layoutVehicle = (LinearLayout) convertView.findViewById(R.id.layoutVehicle); view.imgViewIcon = (ImageView) convertView.findViewById(R.id.imageViewIcon); view.imgViewChecked = (ImageView) convertView.findViewById(R.id.imageViewChecked); convertView.setTag(view); view = (ViewHolder) convertView.getTag(); } catch (Exception e) { } } SM.Debug("DISABLE AFTER: " + position + " | " + (disabledVehicles.get(position) ? "true": "false")); SM.Debug("DISPLAY AFTER: " + position + " | " + (displayedVehicles.get(position) ? "true": "false")); switch(disabledVehicles.get(position) ? 1 : 0) { case 1: view.layoutVehicle.setBackgroundColor(0xffcccccc); //view.imgViewIcon.setImageDrawable(convertToGrayscale(activity.getResources().getDrawable(listVehicle.get(position).getSmallIcon()))); break; case 0: view.layoutVehicle.setBackgroundColor(0xffFFFFFF); //view.imgViewIcon.setImageResource(listVehicle.get(position).getSmallIcon()); break; } switch(displayedVehicles.get(position) ? 1 : 0) { case 1: view.imgViewChecked.setImageResource(R.drawable.checked); break; case 0: view.imgViewChecked.setImageResource(R.drawable.unchecked); break; } } public void changeView(int position) { View con = hash.get(position); ViewHolder view = (ViewHolder) con.getTag(); switch(disabledVehicles.get(position) ? 1 : 0) { case 1: view.layoutVehicle.setBackgroundColor(0xffcccccc); //view.imgViewIcon.setImageDrawable(convertToGrayscale(activity.getResources().getDrawable(listVehicle.get(position).getSmallIcon()))); break; case 0: view.layoutVehicle.setBackgroundColor(0xffFFFFFF); //view.imgViewIcon.setImageResource(listVehicle.get(position).getSmallIcon()); break; } switch(displayedVehicles.get(position) ? 1 : 0) { case 1: view.imgViewChecked.setImageResource(R.drawable.checked); break; case 0: view.imgViewChecked.setImageResource(R.drawable.unchecked); break; } } protected Drawable convertToGrayscale(Drawable drawable) { ColorMatrix matrix = new ColorMatrix(); matrix.setSaturation(0); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix); drawable.setColorFilter(filter); return drawable; } }