package com.safemobile.adapters; import java.util.ArrayList; import java.util.Hashtable; import android.app.Activity; import android.content.Context; 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.AppParams; import com.safemobile.lib.R; import com.safemobile.lib.Vehicle; public class VehiclesGridViewAdapter extends BaseAdapter { private ArrayList listVehicles; private ArrayList disabledVehicles; private ArrayList displayedVehicles; private Activity activity; private Hashtable hash = new Hashtable(); public VehiclesGridViewAdapter(Activity activity, Context context, ArrayList listVehicles, ArrayList disabledVehicles) { super(); this.activity = activity; this.listVehicles = listVehicles; this.disabledVehicles = disabledVehicles; // set displayed positions to false displayedVehicles = new ArrayList(); for(Vehicle veh: listVehicles) { if(AppParams.DEMO && (veh.sc_id == 101 || veh.sc_id == 102)) displayedVehicles.add(true); else displayedVehicles.add(false); } } @Override public int getCount() { return listVehicles.size(); } @Override public Vehicle getItem(int position) { return listVehicles.get(position); } @Override public long getItemId(int position) { return 0; } /** Define Row Template */ 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.layoutVehicle = (LinearLayout) convertView.findViewById(R.id.layoutVehicle); convertView.setTag(view); } else { view = (ViewHolder) convertView.getTag(); } hash.put(position, convertView); /* if recording disabled change background */ try { if(!disabledVehicles.get(position)) view.layoutVehicle.setBackgroundColor(0xFFDDDDDD); else view.layoutVehicle.setBackgroundColor(0xFFFFFFFF); } catch(IndexOutOfBoundsException ex) { view.layoutVehicle.setBackgroundColor(0xFFFFFFFF); } /* set vehicle name and icon */ view.imgViewIcon.setImageResource(listVehicles.get(position).getSmallIcon()); view.txtViewName.setText(listVehicles.get(position).name); /* set checked or not */ if(displayedVehicles.get(position)) view.imgViewChecked.setImageResource(R.drawable.checked); else view.imgViewChecked.setImageResource(R.drawable.unchecked); return convertView; } /** Get the View for one row in the GridView */ public View getView(int position) { return (View) hash.get(position); } /** Change all vehicles checkBox */ public void changeDisplayAll(boolean display) { for(int i=0; i