179 lines
4.7 KiB
Java
179 lines
4.7 KiB
Java
|
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<Vehicle> listVehicles;
|
||
|
private ArrayList<Boolean> disabledVehicles;
|
||
|
private ArrayList<Boolean> displayedVehicles;
|
||
|
private Activity activity;
|
||
|
|
||
|
private Hashtable<Integer, View> hash = new Hashtable<Integer, View>();
|
||
|
|
||
|
public VehiclesGridViewAdapter(Activity activity, Context context, ArrayList<Vehicle> listVehicles, ArrayList<Boolean> disabledVehicles)
|
||
|
{
|
||
|
super();
|
||
|
this.activity = activity;
|
||
|
this.listVehicles = listVehicles;
|
||
|
this.disabledVehicles = disabledVehicles;
|
||
|
|
||
|
// set displayed positions to false
|
||
|
displayedVehicles = new ArrayList<Boolean>();
|
||
|
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<listVehicles.size(); i++)
|
||
|
displayedVehicles.set(i, display);
|
||
|
|
||
|
for(int i=0; i<hash.size(); i++)
|
||
|
{
|
||
|
// change value in the vector
|
||
|
displayedVehicles.set(i, display);
|
||
|
|
||
|
// make changes in the UI //
|
||
|
ViewHolder viewHolder = (ViewHolder) getView(i).getTag();
|
||
|
if(viewHolder!=null)
|
||
|
{
|
||
|
if(display)
|
||
|
viewHolder.imgViewChecked.setImageResource(R.drawable.checked);
|
||
|
else
|
||
|
viewHolder.imgViewChecked.setImageResource(R.drawable.unchecked);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/** Change displayed vehicle checkBox */
|
||
|
public void changeDisplayed(int position, boolean display)
|
||
|
{
|
||
|
// change value in the vector
|
||
|
displayedVehicles.set(position, display);
|
||
|
|
||
|
// make changes in the UI //
|
||
|
ViewHolder viewHolder = (ViewHolder) getView(position).getTag();
|
||
|
if(display)
|
||
|
viewHolder.imgViewChecked.setImageResource(R.drawable.checked);
|
||
|
else
|
||
|
viewHolder.imgViewChecked.setImageResource(R.drawable.unchecked);
|
||
|
}
|
||
|
|
||
|
/** Change disabled vehicle background */
|
||
|
public void changeDisabled(int position, boolean disabled)
|
||
|
{
|
||
|
// change value in the vector
|
||
|
disabledVehicles.set(position, disabled);
|
||
|
|
||
|
// make changes in the UI //
|
||
|
ViewHolder viewHolder = (ViewHolder) getView(position).getTag();
|
||
|
if(disabled)
|
||
|
viewHolder.layoutVehicle.setBackgroundColor(0xFFDDDDDD);
|
||
|
else
|
||
|
viewHolder.layoutVehicle.setBackgroundColor(0xFFFFFFFF);
|
||
|
}
|
||
|
}
|