package com.transitwidget.fragments;
import android.content.ContentUris;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import com.actionbarsherlock.app.SherlockListFragment;
import com.transitwidget.R;
import com.transitwidget.feed.model.Favorite;
import com.transitwidget.fragments.StopListFragment.Listener;
public class FavoritesListFragment extends SherlockListFragment implements LoaderManager.LoaderCallbacks {
public static final String ARG_AGENCY_TAG = "agencyTag";
private SimpleCursorAdapter mAdapter;
private Listener mListener;
private String mAgency;
public FavoritesListFragment() {
super();
}
public FavoritesListFragment(Listener listener, Bundle args) {
super();
mListener = listener;
setArguments(args);
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAgency = getArguments().getString(ARG_AGENCY_TAG);
String[] from = {Favorite.STOP_LABEL, Favorite.ROUTE, Favorite.DIRECTION_LABEL};
int[] to = {R.id.stop, R.id.route, R.id.direction};
mAdapter = new SimpleCursorAdapter(getActivity(), R.layout.favorite_list_item, null, from, to);
setListAdapter(mAdapter);
// Prepare the loader. Either re-connect with an existing one,
// or start a new one.
getLoaderManager().initLoader(0, null, this);
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Cursor cursor = getActivity().getContentResolver().query(
ContentUris.withAppendedId(Favorite.CONTENT_URI, id),
new String[] { Favorite.STOP, Favorite.DIRECTION, Favorite.ROUTE },
null, null, null);
String tag = null, direction = null, route = null;
if (cursor.moveToFirst()) {
tag = cursor.getString(cursor.getColumnIndex(Favorite.STOP));
direction = cursor.getString(cursor.getColumnIndex(Favorite.DIRECTION));
route = cursor.getString(cursor.getColumnIndex(Favorite.ROUTE));
}
if (tag != null) {
mListener.stopSelected(tag, direction, route);
}
}
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
Uri baseUri = Favorite.CONTENT_URI;
String selection = Favorite.AGENCY + " = ?";
String[] selecitonArgs = { mAgency };
String[] projection = { Favorite.STOP_LABEL, Favorite.ROUTE, Favorite.DIRECTION_LABEL, Favorite._ID };
return new CursorLoader(getActivity(), baseUri,
projection, selection, selecitonArgs,
Favorite.ROUTE + " ASC");
}
public void onLoadFinished(Loader loader, Object data) {
mAdapter.changeCursor((Cursor)data);
}
public void onLoaderReset(Loader loader) {
mAdapter.changeCursor(null);
}
}