Wrote Loader for List of Alarms
This commit is contained in:
@@ -3,11 +3,11 @@ package com.philliphsu.clock2.alarms;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Log;
|
||||
@@ -19,23 +19,25 @@ import com.philliphsu.clock2.Alarm;
|
||||
import com.philliphsu.clock2.OnListItemInteractionListener;
|
||||
import com.philliphsu.clock2.R;
|
||||
import com.philliphsu.clock2.editalarm.EditAlarmActivity;
|
||||
import com.philliphsu.clock2.model.AlarmsListCursorLoader;
|
||||
import com.philliphsu.clock2.model.AlarmListLoader;
|
||||
import com.philliphsu.clock2.model.DatabaseManager;
|
||||
import com.philliphsu.clock2.util.AlarmUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
// TODO: Use native fragments since we're targeting API >=19?
|
||||
// TODO: Use native LoaderCallbacks.
|
||||
public class AlarmsFragment extends Fragment implements LoaderCallbacks<Cursor>,
|
||||
public class AlarmsFragment extends Fragment implements LoaderCallbacks<List<Alarm>>,
|
||||
OnListItemInteractionListener<Alarm> {
|
||||
private static final int REQUEST_EDIT_ALARM = 0;
|
||||
public static final int REQUEST_CREATE_ALARM = 1;
|
||||
private static final String TAG = "AlarmsFragment";
|
||||
|
||||
private AlarmsCursorAdapter mCursorAdapter;
|
||||
private DatabaseManager mDatabaseManager;
|
||||
private AlarmsAdapter mAdapter;
|
||||
|
||||
@Bind(R.id.list) RecyclerView mList;
|
||||
|
||||
@@ -65,7 +67,6 @@ public class AlarmsFragment extends Fragment implements LoaderCallbacks<Cursor>,
|
||||
|
||||
// Initialize the loader to load the list of runs
|
||||
getLoaderManager().initLoader(0, null, this);
|
||||
mDatabaseManager = DatabaseManager.getInstance(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,8 +77,8 @@ public class AlarmsFragment extends Fragment implements LoaderCallbacks<Cursor>,
|
||||
// Set the adapter
|
||||
Context context = view.getContext();
|
||||
mList.setLayoutManager(new LinearLayoutManager(context));
|
||||
mCursorAdapter = new AlarmsCursorAdapter(this);
|
||||
mList.setAdapter(mCursorAdapter);
|
||||
mAdapter = new AlarmsAdapter(Collections.<Alarm>emptyList(), this);
|
||||
mList.setAdapter(mAdapter);
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -100,20 +101,20 @@ public class AlarmsFragment extends Fragment implements LoaderCallbacks<Cursor>,
|
||||
}
|
||||
|
||||
@Override
|
||||
public android.support.v4.content.Loader<Cursor> onCreateLoader(int id, Bundle args) {
|
||||
return new AlarmsListCursorLoader(getActivity());
|
||||
public Loader<List<Alarm>> onCreateLoader(int id, Bundle args) {
|
||||
return new AlarmListLoader(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(android.support.v4.content.Loader<Cursor> loader, Cursor data) {
|
||||
// Called on the main thread after loading is complete
|
||||
mCursorAdapter.swapCursor(data);
|
||||
public void onLoadFinished(Loader<List<Alarm>> loader, List<Alarm> data) {
|
||||
mAdapter.replaceData(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(android.support.v4.content.Loader<Cursor> loader) {
|
||||
// The adapter's current cursor should not be used anymore
|
||||
mCursorAdapter.swapCursor(null);
|
||||
public void onLoaderReset(Loader<List<Alarm>> loader) {
|
||||
// Can't pass in null, because replaceData() will try to add all the elements
|
||||
// from the given collection, so we would run into an NPE.
|
||||
mAdapter.replaceData(Collections.<Alarm>emptyList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -125,6 +126,7 @@ public class AlarmsFragment extends Fragment implements LoaderCallbacks<Cursor>,
|
||||
|
||||
switch (requestCode) {
|
||||
case REQUEST_CREATE_ALARM:
|
||||
// TODO: notifyItemInserted?
|
||||
getLoaderManager().restartLoader(0, null, this);
|
||||
case REQUEST_EDIT_ALARM:
|
||||
Alarm deletedAlarm;
|
||||
@@ -132,6 +134,7 @@ public class AlarmsFragment extends Fragment implements LoaderCallbacks<Cursor>,
|
||||
EditAlarmActivity.EXTRA_DELETED_ALARM)) != null) {
|
||||
onListItemDeleted(deletedAlarm);
|
||||
}
|
||||
// TODO: notifyItemRemoved?
|
||||
getLoaderManager().restartLoader(0, null, this);
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user