public List<ToDoItem> getAllItems() { List<ToDoItem> items = new ArrayList<>(); String items_select_all; if (today) { items_select_all = ("SELECT * FROM " + TABLE_TODO + " WHERE " + " (strftime('%j', 'now','localtime') - strftime('%j', datetime(" + KEY_DUE_DATE + "/1000, 'unixepoch', 'localtime'))) = 0 " + " ORDER BY " + KEY_DUE_DATE + " DESC"); } else if (hideOldItems()) { items_select_all = ("SELECT * FROM " + TABLE_TODO + " WHERE " + " (strftime('%j', 'now', 'localtime') - strftime('%j', datetime(" + KEY_DUE_DATE + "/1000, 'unixepoch', 'localtime'))) < 3 " + " ORDER BY " + KEY_DUE_DATE + " DESC"); } else { items_select_all = String.format("SELECT * FROM %s ORDER BY " + KEY_DUE_DATE + " DESC", TABLE_TODO); } SQLiteDatabase db = getReadableDatabase(); if (db == null) return null; Cursor c = db.rawQuery(items_select_all, null); try { if (c.moveToFirst()) { do { ToDoItem newItem = new ToDoItem(); newItem.description = c.getString(c.getColumnIndex(KEY_DESCRIPTION)); newItem.id = c.getInt(c.getColumnIndex(KEY_ID)); newItem.priority = c.getInt(c.getColumnIndex(KEY_PRIORITY)); newItem.modifiedDate = c.getLong(c.getColumnIndex(KEY_MODIFIED_DATE)); newItem.dueDate = c.getLong(c.getColumnIndex(KEY_DUE_DATE)); newItem.createdDate = c.getLong(c.getColumnIndex(KEY_CREATED_DATE)); items.add(newItem); } while (c.moveToNext()); } } catch (Exception e) { Log.e(TAG, "Exception caught while parsing cursor: " + e); } finally { if (c != null && !c.isClosed()) c.close(); } return items; }