package jm.org.data.area; import static jm.org.data.area.AreaConstants.S_COLLECTIONS; import static jm.org.data.area.AreaConstants.S_COUNTRIES; import static jm.org.data.area.AreaConstants.S_INDICATORS; import static jm.org.data.area.AreaConstants.S_PARENT; import static jm.org.data.area.AreaConstants.S_SAVED_DATA; import static jm.org.data.area.DBConstants.SELECTION_ID; import static jm.org.data.area.DBConstants.SELECTION_NAME; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.util.Log; import android.view.View; import android.widget.ListView; import android.widget.Toast; import com.google.analytics.tracking.android.EasyTracker; import com.google.analytics.tracking.android.MapBuilder; public class SelectionListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> { public static final String TAG = SelectionListFragment.class .getSimpleName(); //private final String POSITION = "position"; //private int listPosition; private IndicatorActivity act; private HomeActivity hAct; private CountryActivity cAct; private CollectionsActivity colAct; private SavedDataActivity sAct; private int selection, parentNum; private Activity parent; private SelectionListCursorAdapter myAdapter; private Intent actIntent; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myAdapter = new SelectionListCursorAdapter(getActivity(), null); setListAdapter(myAdapter); // getLoaderManager().initLoader(0, null, this); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); /* Cursor Loader */ setEmptyText("No Selections found"); try{ parent = getActivity(); if (parent instanceof HomeActivity){ hAct = (HomeActivity) getActivity(); selection = hAct.getSelectionID(); parentNum = hAct.getParentNum(); }else if (parent instanceof IndicatorActivity){ act = (IndicatorActivity) getActivity(); selection = act.getSelectionID(); parentNum = act.getParentNum(); }else if (parent instanceof CollectionsActivity){ colAct = (CollectionsActivity) getActivity(); selection = colAct.getSelectionID(); parentNum = colAct.getParentNum(); }else if (parent instanceof CountryActivity){ cAct = (CountryActivity) getActivity(); selection = cAct.getSelectionID(); parentNum = cAct.getParentNum(); }else if(parent instanceof SavedDataActivity){ sAct = (SavedDataActivity) getActivity(); selection = sAct.getSelectionID(); parentNum = sAct.getParentNum(); }else{ Log.d(TAG,"We Have no clue what the starting activity is. Hmm, not sure what is happening"); } }catch (ClassCastException actException){ Log.d(TAG,"We Have no clue what the starting activity is"); hAct = (HomeActivity) getActivity(); selection = hAct.getSelectionID(); } /* try { // Check if the parent activity is the IndicatorActivity hAct = (HomeActivity) getActivity(); selection = hAct.getSelectionID(); } catch (ClassCastException actException) { Log.e(TAG, "Not Home Activity "); //act = (IndicatorActivity) getActivity(); selection = 1; }*/ setListShown(false); getLoaderManager().initLoader(0, null, this); } @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // Get Cursor at list item row Cursor cursor = (Cursor) getListAdapter().getItem(position); String item = cursor.getString(cursor.getColumnIndex(SELECTION_NAME)); int item_id = cursor.getInt(cursor .getColumnIndex(SELECTION_ID)); Log.d(TAG, "Selection selected is: " + item + "-> ID: " + item_id); /* public static final int S_INDICATORS = 1; public static final int S_COUNTRIES = 2; public static final int S_COLECTIONS = 3; public static final int S_SAVED_DATA = 4;*/ // May return null if a EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(getActivity()); // MapBuilder.createEvent().build() returns a Map of event fields and values // that are set and sent with the hit. easyTracker.send(MapBuilder .createEvent("ui_action", // Event category (required) "Main_List_Selction", // Event action (required) "Selection is: " + item, // Event label null) // Event value .build() ); switch (item_id){ case S_INDICATORS: actIntent = new Intent(getActivity().getApplicationContext(), HomeActivity.class); actIntent.putExtra(SELECTION_ID, item_id); actIntent.putExtra(SELECTION_NAME, item); actIntent.putExtra(S_PARENT, parentNum); startActivity(actIntent); getActivity().finish(); break; case S_COUNTRIES: Toast.makeText(getActivity(), "Selected Countries", Toast.LENGTH_SHORT).show(); actIntent = new Intent(getActivity().getApplicationContext(), CountryActivity.class); actIntent.putExtra(SELECTION_ID, item_id); actIntent.putExtra(SELECTION_NAME, item); actIntent.putExtra(S_PARENT, parentNum); startActivity(actIntent); getActivity().finish(); break; case S_COLLECTIONS: Toast.makeText(getActivity(), "Selected Collections", Toast.LENGTH_SHORT).show(); actIntent = new Intent(getActivity().getApplicationContext(), CollectionsActivity.class); actIntent.putExtra(SELECTION_ID, item_id); actIntent.putExtra(SELECTION_NAME, item); actIntent.putExtra(S_PARENT, parentNum); startActivity(actIntent); getActivity().finish(); break; case S_SAVED_DATA: Toast.makeText(getActivity(), "Selected Saved Data", Toast.LENGTH_SHORT).show(); actIntent = new Intent(getActivity().getApplicationContext(), SavedDataActivity.class); actIntent.putExtra(SELECTION_ID, item_id); actIntent.putExtra(SELECTION_NAME, item); actIntent.putExtra(S_PARENT, parentNum); startActivity(actIntent); getActivity().finish(); break; } } @Override public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { return new SelectionListAdapter(getActivity(), selection); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { myAdapter.swapCursor(cursor); if (isResumed()) { setListShown(true); } else { Log.d(TAG, "Activity is not being resumed"); setListShownNoAnimation(true); } } public void reload() { getLoaderManager().restartLoader(0, null, this); } @Override public void onResume(){ reload(); super.onResume(); } @Override public void onStop() { try { super.onStop(); if (this.myAdapter !=null){ //this.myAdapter.getCursor().close(); //this.myAdapter = null; } //this.getLoaderManager().destroyLoader(0); /*if (this.mActivityListCursorObj != null) { this.mActivityListCursorObj.close(); }*/ super.onStop(); } catch (Exception error) { Log.d(TAG, "Error in stopping Adapter" + error.getStackTrace()); }// end try/catch (Exception error) }// end onStop @Override public void onLoaderReset(Loader<Cursor> arg0) { } }