package com.mehmetakiftutuncu.eshotroid.adapters; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import android.content.Context; import android.content.Intent; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import com.mehmetakiftutuncu.eshotroid.Constants; import com.mehmetakiftutuncu.eshotroid.R; import com.mehmetakiftutuncu.eshotroid.Main; import com.mehmetakiftutuncu.eshotroid.Times; import com.mehmetakiftutuncu.eshotroid.database.MyDatabase; import com.mehmetakiftutuncu.eshotroid.model.Bus; /** * Favorited bus grid list adapter class is the adapter that supplies the favorited bus list with items from an ArrayList of Bus items * * @author Mehmet Akif Tütüncü */ public class FavoritedBusGridAdapter extends ArrayAdapter<Bus> { private Context myContext; private ArrayList<Bus> myItems; /** * Holder class for each item */ static class ViewHolder { public Button button; } /** * Tag for debugging */ public static final String LOG_TAG = "Eshotroid_FavoritedBusGridAdapter"; public FavoritedBusGridAdapter(Context context, ArrayList<Bus> items) { super(context, R.layout.busses_row, items); this.myContext = context; this.myItems = items; Collections.sort(items, new Comparator<Bus>() { @Override public int compare(Bus lhs, Bus rhs) { return (lhs.getNumber() < rhs.getNumber()) ? -1 : ((lhs.getNumber() > rhs.getNumber()) ? 1 : 0); } }); } @Override public View getView(int position, View convertView, ViewGroup parent) { View item = convertView; if(item == null) { LayoutInflater inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); item = inflater.inflate(R.layout.busses_favoritedbus, parent, false); ViewHolder viewHolder = new ViewHolder(); viewHolder.button = (Button) item.findViewById(R.id.button_favoritedBus); item.setTag(viewHolder); } ViewHolder holder = (ViewHolder) item.getTag(); final Bus bus = myItems.get(position); holder.button.setText("" + bus.getNumber()); holder.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(myContext, Times.class); intent.putExtra(Constants.BUS_NUMBER_EXTRA, bus.getNumber()); myContext.startActivity(intent); } }); holder.button.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { int number = Integer.parseInt(((Button) v).getText().toString()); Log.d(LOG_TAG, "Removing " + number + " from favorited busses..."); ArrayList<Bus> bussesList = ((Main) myContext).getBussesList(); for(int i = 0; i < bussesList.size(); i++) { if(bussesList.get(i).getNumber() == number) { bussesList.get(i).setFavorited(false); ((Main) myContext).updateListHeader(); ((Main) myContext).getBusListAdapter().notifyDataSetChanged(); MyDatabase db = new MyDatabase(myContext); db.openDB(); db.addOrUpdate(bussesList.get(i)); db.closeDB(); break; } } return true; } }); return item; } }