показать "Нет заголовка", если столбец в SQLite пуст - PullRequest
1 голос
/ 25 февраля 2020

Я сделал приложение для заметок и даю пользователям возможность оставить название своей заметки пустым. Но в RecyclerView и панели инструментов отображается заголовок, и в этом случае он пуст. Я пытался присвоить значение этому столбцу при создании таблицы, но он не работает.

Вот код для создания таблицы:

@Override
public void onCreate(SQLiteDatabase db) {

    String query = "CREATE TABLE " + DATABASE_TABLE + "(" +
            ID + " INTEGER PRIMARY KEY," +
            TITLE + " TEXT DEFAULT 'No Title'," +
            CONTENT + " TEXT," +
            DATE + " TEXT," +
            TIME + " TEXT" + ")";
    db.execSQL(query);
}

ОБНОВЛЕНИЕ:

Сохранить метод при добавлении заметки:

 private void saveNote() {
    if (TextUtils.isEmpty(title.getText()) && TextUtils.isEmpty(content.getText())) {
        Toast.makeText(this, "Please write Something in your note", Toast.LENGTH_SHORT).show();
    } else {
        NotePad notePad = new NotePad(title.getText().toString(), content.getText().toString(), currentDate, currentTime);
        Database database = new Database(this);
        database.addNote(notePad);
        Toast.makeText(this, "Note Saved!", Toast.LENGTH_LONG).show();
        moveToList();
    }

}

добавить метод заметки в базу данных:

void addNote(NotePad notePad) {
    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(TITLE, notePad.getTitle());
    cv.put(CONTENT, notePad.getContent());
    cv.put(DATE, notePad.getDate());
    cv.put(TIME, notePad.getTime());

    database.insert(DATABASE_TABLE, null, cv);
}

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

В методе addNote() вы должны , а не установить значение в объекте ContentValues для TITLE, если оно пустое, поэтому SQLite установит значение столбца в значение по умолчанию:

void addNote(NotePad notePad) {
    SQLiteDatabase database = this.getWritableDatabase();
    cv = new ContentValues();
    if (!TextUtils.isEmpty(notePad.getTitle())) cv.put(TITLE, notePad.getTitle());
    cv.put(CONTENT, notePad.getContent());
    cv.put(DATE, notePad.getDate());
    cv.put(TIME, notePad.getTime());

    database.insert(DATABASE_TABLE, null, cv);
}
0 голосов
/ 25 февраля 2020

Используйте IFNULL при получении данных. Например

  Select IFNULL(“TITLE”,”NO TITLE”)  from table...
...