Я изо всех сил пытаюсь получить строку из SQLite.
Вот мой фрагмент DatabaseHelper:
public Expense getExpense(long id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(EXPENSE_TABLE_NAME,
new String[]{EXPENSE_COLUMN_ID, EXPENSE_COLUMN_TYPE, EXPENSE_COLUMN_PERSON_IN_DEBT, EXPENSE_COLUMN_AMOUNT,
EXPENSE_COLUMN_DESCRIPTION, EXPENSE_COLUMN_TIMESTAMP, EXPENSE_COLUMN_IS_PAID},
EXPENSE_COLUMN_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
assert cursor != null;
Expense expense = new Expense(
cursor.getInt(cursor.getColumnIndex(EXPENSE_COLUMN_ID)),
ERROR HERE -> (ExpenseType)cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_TYPE)),
ERROR HERE -> (Person)cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_PERSON_IN_DEBT)),
cursor.getDouble(cursor.getColumnIndex(EXPENSE_COLUMN_AMOUNT)),
cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_DESCRIPTION)),
cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_TIMESTAMP)),
cursor.getInt(cursor.getColumnIndex(EXPENSE_COLUMN_IS_PAID))); // true for 1
cursor.close();
db.close();
return expense;
}
Конструктор в модели расходов выглядит следующим образом:
public Expense(int id, ExpenseType expenseType, Person person, Double amount, String description, String timestamp, int isPaid).
Я получаю ошибку приведения к линиям, которые я пометил с ошибкой выше
"Необратимый тип; невозможно преобразовать 'java.lang.String' в 'com ... model.ExpenseType"
как я могу сделать эту работу?В базе данных объекты expenseType
и person
добавляются как строки.