База данных не сохраняется
Почему-то программа не сохраняет базу данных (после перезагрузки список очищается, но сразу после того, как я заношу его, он отображается нормально). Кто-нибудь знает, где я накосячил? Заранее спасибо.
Код активности, где должен отображаться список
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addBtn = (FloatingActionButton) findViewById(R.id.addBtn);
timetableList = (RecyclerView) findViewById(R.id.timetableList);
// вношу данные из активности DateTime в список
timetableList.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
timetableArrayList = DBHelper.getInstance(getApplicationContext()).getTimetable();
adapter = new DataAdapter(timetableArrayList);
timetableList.setAdapter(adapter);
// по кнопке в итеме удаляю элемент из списка
adapter.setOnClickDeleteListener(new DataAdapter.onClickDelete() {
@Override
public void onClickDelete(Timetable timetable, int position) {
DBHelper.getInstance(getApplicationContext()).deleteActivity(timetable);
timetableArrayList.remove(position);
adapter.notifyDataSetChanged();
}
});
// по кнопке перехожу в активность DateTime для настройкки времени, даты и названия занятия
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i;
i = new Intent(MainActivity.this, DateTime.class);
startActivityForResult(i, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent i) {
if (resultCode == 0) {return;}
String activityName = i.getStringExtra("activityName");
String date = i.getStringExtra("date");
String time = i.getStringExtra("time");
String description = i.getStringExtra("description");
String type = i.getStringExtra("type");
Timetable timetable = new Timetable(activityName, time, date, description, type);
DBHelper.getInstance(getApplicationContext()).
addTimetable(timetable);
timetableArrayList.add(timetable);
adapter.notifyDataSetChanged();
SQLHelper
public class SQLHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "notes.db";
private static final int DB_VERSION = 1;
public static final String TIMETABLE = "timetable";
public static final String NAME= "title";
public static final String TIME = "time";
public static final String DATE = "date";
public static final String DESCRIPTION = "description";
public static final String TYPE = "type";
public SQLHelper(@Nullable Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TIMETABLE +
NAME + " (TEXT NOT NULL, " +
DESCRIPTION + " TEXT NOT NULL, " +
TYPE + " TEXT NOT NULL, " +
TIME + " NUMERIC, " +
DATE + " NUMERIC)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
DBHelper
public class DBHelper {
private static DBHelper instance;
private SQLHelper dbHelper;
private SQLiteDatabase db;
private DBHelper(Context context){
dbHelper = new SQLHelper(context);
db = dbHelper.getWritableDatabase();
}
public static DBHelper getInstance(Context context){
if(instance == null)
instance = new DBHelper(context);
return instance;
}
public void addTimetable(Timetable activity){
ContentValues contentValues = new ContentValues();
contentValues.put(SQLHelper.NAME, activity.getTitle());
contentValues.put(SQLHelper.TIME, activity.getTime());
contentValues.put(SQLHelper.DATE, activity.getDate());
contentValues.put(SQLHelper.DESCRIPTION, activity.getDescription());
contentValues.put(SQLHelper.TYPE, activity.getType());
db.insert(SQLHelper.TIMETABLE, null, contentValues);
}
public ArrayList<Timetable> getTimetable() {
ArrayList<Timetable> timetable = new ArrayList<>();
Cursor cursor = db.query(SQLHelper.TIMETABLE, new String[]{"*"},
null, null, null, null, null);
int name = cursor.getColumnIndex(SQLHelper.NAME);
int time = cursor.getColumnIndex(SQLHelper.TIME);
int date = cursor.getColumnIndex(SQLHelper.DATE);
int description = cursor.getColumnIndex(SQLHelper.DESCRIPTION);
int type = cursor.getColumnIndex(SQLHelper.TYPE);
while (cursor.moveToNext()){
timetable.add (new Timetable(
cursor.getString(name),
cursor.getString(time),
cursor.getString(date),
cursor.getString(description),
cursor.getString(type)));
}
return timetable;
}
public void deleteActivity(Timetable timetable){
db.delete(SQLHelper.TIMETABLE,
SQLHelper.NAME + "=" + timetable.getTitle() + "AND" +
SQLHelper.TIME + "=" + timetable.getTime() + "AND" +
SQLHelper.DATE + "=" + timetable.getDate() + "AND" +
SQLHelper.DESCRIPTION + "=" + timetable.getDescription() + "AND" +
SQLHelper.TYPE + "=" + timetable.getType(),
null);
}
}