package jm.org.data.area; import static jm.org.data.area.DBConstants.*; import static jm.org.data.area.AreaConstants.*; 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; public class CollectionsListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> { public static final String TAG = CollectionsListFragment.class .getSimpleName(); //private int listPosition; CollectionsActivity act; CollectionsCursorAdapter myAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myAdapter = new CollectionsCursorAdapter(getActivity(), null); setListAdapter(myAdapter); // getLoaderManager().initLoader(0, null, this); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); /* Cursor Loader */ setEmptyText("No Collections found"); // myAdapter = new AreaCursorAdapter(); // setListAdapter(mAdapter); setListShown(false); getLoaderManager().initLoader(0, null, this); act = (CollectionsActivity) getActivity(); myAdapter.setSelectedPosition(act.getColPosition(), getListView()); getListView().setSelection(act.getColPosition()); Log.d(TAG, "Position: " + act.getColPosition()); } @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); setCollection(position); } private void setCollection(int position) { // Get Cursor at list item row Cursor cursor = (Cursor) getListAdapter().getItem(position); String item = cursor.getString(cursor.getColumnIndex(COLLECTION_NAME)); int item_id = cursor.getInt(cursor .getColumnIndex(COLLECTION_ID)); String item_desc = cursor.getString(cursor .getColumnIndex(COLLECTION_DESC)); Log.d(TAG, "Collection selected is: " + item + "-> ID: " + item_id); act = (CollectionsActivity) getActivity(); Intent intent = new Intent(getActivity().getApplicationContext(), CollectionsActivity.class); intent.putExtra(COLLECTION_DESC, item_desc); intent.putExtra("col_name", item); intent.putExtra("col_id", item_id); intent.putExtra(POSITION, position); startActivity(intent); act.finish(); } @Override public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { return new CollectionsListAdapter(getActivity()); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { myAdapter.swapCursor(cursor); if ((cursor.getCount() > 0) && (act.getColPosition() == -1)){ setCollection(0); } if (isResumed()) { setListShown(true); } else { Log.d(TAG, "Activity is not being resumed"); setListShownNoAnimation(true); try { myAdapter.setSelectedPosition(act.getColPosition()); } catch (NullPointerException e) { // Empty list or startup activy incomplete } } } @Override public void onLoaderReset(Loader<Cursor> arg0) { //myAdapter.swapCursor(null); } public void setListSelection(int position) { myAdapter.setSelectedPosition(position); } public void reload() { getLoaderManager().restartLoader(0, null, this); } @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(); }*/ } catch (Exception error) { Log.d(TAG, "Error in stopping Adapter"); }// end try/catch (Exception error) }// end onStop }