croninberg
Newbie
I'm having a bit of trouble here when trying to save the state of an ArrayList of a custom object. Everytime the activity restarts, it doesn't restore the previous list.
My object is as follows,
Part of my class that holds the list,
My saveInstanceStateMethod,
I've looked at a number of solutions on stackoverflow but nothing seems to work.
My object is as follows,
Code:
package com.dev.shnellers.heartrate;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by Sean on 08/01/2017.
*/
public class ReminderTime implements Parcelable {
private int hour, minute;
public ReminderTime(int hour, int minute) {
setHour(hour);
setMinute(minute);
}
protected ReminderTime(Parcel in) {
hour = in.readInt();
minute = in.readInt();
}
public static final Creator<ReminderTime> CREATOR = new Creator<ReminderTime>() {
@Override
public ReminderTime createFromParcel(Parcel in) {
return new ReminderTime(in);
}
@Override
public ReminderTime[] newArray(int size) {
return new ReminderTime[size];
}
};
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
this.minute = minute;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(hour);
parcel.writeInt(minute);
}
}
Part of my class that holds the list,
Code:
private static ArrayList<ReminderTime> reminders;
private Bundle mBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reminder_list_view);
fab = (FloatingActionButton) findViewById(R.id.add_reminder);
fab.setOnClickListener(this);
// Initialize the list of reminders
if (savedInstanceState == null || !savedInstanceState.containsKey("remind")) {
Log.d("Reminders", "no list");
reminders = new ArrayList<>();
} else {
Log.d("Reminders", "has list");
reminders = savedInstanceState.getParcelableArrayList("remind");
}
mBundle = this.getIntent().getExtras();
if (mBundle != null) {
ReminderTime time = mBundle.getParcelable("reminderTime");
Log.d("ReminderTime", Integer.toString(time.getHour()));
reminders.add(time);
}
displayRecyclerView();
}
My saveInstanceStateMethod,
Code:
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putParcelableArrayList("remind", reminders);
Log.d("Reminders", "saveState");
Log.d("Reminders list size", Integer.toString(reminders.size()));
super.onSaveInstanceState(outState);
}
I've looked at a number of solutions on stackoverflow but nothing seems to work.