package com.project.smartpump;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collections;
import com.project.classes.GasStation;
import com.project.classes.StationSearchResult;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class SearchResultsAdapter extends BaseAdapter {
private final Context context;
private final ArrayList<StationSearchResult> stationResults;
public SearchResultsAdapter(ArrayList<StationSearchResult> results,
Context context) {
super();
this.context = context;
this.stationResults = results;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = mInflater.inflate(R.layout.search_result_item, null);
}
ImageView logo = (ImageView) v.findViewById(R.id.stationLogo);
TextView name = (TextView) v.findViewById(R.id.stationName);
// TextView address = (TextView) v.findViewById(R.id.stationAddress);
TextView distance = (TextView) v.findViewById(R.id.distanceAway);
TextView pumpPrice = (TextView) v.findViewById(R.id.pumpPrice);
TextView adjustedCost = (TextView) v.findViewById(R.id.adjustedCost);
StationSearchResult r = stationResults.get(position);
GasStation s = r.getStation();
int logoId = s.getLogoId(context);
if (logoId != 0)
{
logo.setImageDrawable(context.getResources().getDrawable(logoId));
}
else
{
logo.setImageDrawable(context.getResources().getDrawable(R.drawable.gasstation));
}
name.setText(s.getStationName());
// address.setText(s.getWebAddress());
distance.setText(String.valueOf(s.getDistance()) + " mi");
NumberFormat currency = NumberFormat.getCurrencyInstance();
double fuelPrice = s.getSelectedFuelPrice().getPrice();
double adjustCost = r.getAdjustedCost();
pumpPrice.setText(fuelPrice == 0.0 ? "N/A" : currency.format(fuelPrice));
adjustedCost.setText(adjustCost == 0.0 ? "N/A" : currency.format(adjustCost));
return v;
}
public SearchResultsAdapter DistanceSort()
{
Collections.sort(stationResults, new DistanceComparator());
return this;
}
public SearchResultsAdapter AdjSort()
{
Collections.sort(stationResults, new AdjCostComparator());
return this;
}
public SearchResultsAdapter PriceSort()
{
Collections.sort(stationResults, new PriceComparator());
return this;
}
@Override
public int getCount() {
return stationResults.size();
}
@Override
public Object getItem(int position) {
return stationResults.get(position);
}
@Override
public long getItemId(int arg0) {
return 0;
}
}