Use loader to load single alarm

This commit is contained in:
Phillip Hsu
2016-06-30 02:58:34 -07:00
parent d042891e51
commit 43e9c20468
5 changed files with 112 additions and 16 deletions
@@ -0,0 +1,23 @@
package com.philliphsu.clock2.model;
import android.content.Context;
import com.philliphsu.clock2.Alarm;
/**
* Created by Phillip Hsu on 6/30/2016.
*/
public class AlarmLoader extends DataLoader<Alarm> {
private long mAlarmId;
public AlarmLoader(Context context, long alarmId) {
super(context);
mAlarmId = alarmId;
}
@Override
public Alarm loadInBackground() {
return DatabaseManager.getInstance(getContext()).getAlarm(mAlarmId);
}
}
@@ -0,0 +1,34 @@
package com.philliphsu.clock2.model;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
/**
* Created by Phillip Hsu on 6/30/2016.
*/
public abstract class DataLoader<D> extends AsyncTaskLoader<D> {
private D mData;
public DataLoader(Context context) {
super(context);
}
@Override
protected void onStartLoading() {
if (mData != null) {
deliverResult(mData);
} else {
forceLoad();
}
}
@Override
public void deliverResult(D data) {
mData = data;
if (isStarted()) {
super.deliverResult(data);
}
}
}