IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Databáze v Androidu - Vytvoření ukázkového projektu

Vítejte u seriálu o ukládání dat do databáze v Androidu.

Postupně si ukážeme dva způsoby programování databáze - starší a novější. Díky tomu bude výklad rozdělen do dvou samostatných celků.

Nejprve budeme pracovat na projektu, který bude s databází pracovat základním (starším) způsobem. Po dokončení projektu jej upravíme pro použití novějšího způsobu práce s databází (knihovna Room).

Samozřejmostí bude i ukázkový projekt v podobě jednoduchého poznámkového bločku, který bude nové poznámky ukládat do databáze. Tato databáze bude umístěna v úložišti zařízení, na kterém aplikace poběží.

Na hlavní obrazovce ukázkové aplikace bude zobrazován seznam uložených poznámek. Po kliknutí na libovolnou poznámku bude v dialogovém okně zobrazen její obsah. Každé poznámce budeme moci nastavit prioritu (Nízká, Střední nebo Vysoká), která bude mít vliv na barvu poznámky v seznamu poznámek. Také bude možné jakoukoliv poznámku označit jako neaktivní.

Hlavní okno aplikace bude vypadat takto:

Databáze v Androidu

Detail poznámky:

Databáze v Androidu

Vytvoření nové poznámky:

Databáze v Androidu

Vytvoření projektu Notepad

Přesuneme se do okna se šablonami. V levé části okna vybereme možnost Phone and Tablet. V pravé části okna vybereme možnost Empty Activity:

Databáze v Androidu

V dalším okně, do políčka Name, zadáme název našeho projektu Notepad. Do políčka Package name napíšeme cz.itnetwork.notepad. Protože budeme programovat v Javě, vybereme v políčku Language možnost Java:

Databáze v Androidu

Po dokončení nastavení projektu je zobrazeno vývojové prostředí Android studia, v němž vidíme otevřené vygenerované soubory MainActivity.java a activity_main.xml:

Databáze v Androidu

Soubor strings.xml

Do souboru strings.xml ukládáme textové řetězce použité v projektu. V Java kódu, nebo XML kódu na ně pouze odkazujeme. Soubor res/values/strings.xml patří mezi soubory automaticky generované Android studiem při vytvoření projektu:

Databáze v Androidu

Do souboru strings.xml přidáme následující řádky:

<string name="delete_note">Odstranění poznámky</string>
<string name="question_delete_note">Opravdu tuto poznámku smazat?</string>
<string name="yes">Ano</string>
<string name="close">Zavřít</string>
<string name="note_detail">Detail poznámky</string>
<string name="no">Ne</string>
<string name="warning">Upozornění</string>
<string name="question_close">Poznámka nebude uložena. Opravdu zavřít?</string>

Rozhraní AppConstants

Rozhraní AppConstants vytvoříme z důvodu přehlednosti kódu projektu. Jeho účelem je vytvořit úložiště konstant použitých v projektu. V případě tohoto projektu to není nutné, protože budeme deklarovat pouze tři konstanty. V rozsáhlejších projektech je to velmi užitečné.

Ve struktuře projektu klikneme pravým tlačítkem myši na složku notepad a v zobrazeném menu, přes položku New, zvolíme možnost Java Class:

Databáze v Androidu

V zobrazeném okně doplníme do prvního textového políčka název nového rozhraní, v našem případě AppConstants. Pod textovým políčkem označíme možnost Interface a potvrdíme stisknutím klávesy Enter:

Databáze v Androidu

Zde je vždy defaultně vybrána možnost Class. Pokud bychom zapomněli tuto možnost přepnout na Interface, byla by místo rozhraní vytvořena klasická třída.

Vytvořený soubor AppConstants.java otevřeme a doplníme těmito třemi řádky:

public interface AppConstants {
    int PRIORITY_LOW = 0;
    int PRIORITY_NORMAL = 1;
    int PRIORITY_HIGH = 2;
}

Rozhraní AppConstants můžeme v projektu použít dvěma způsoby. Prvním způsobem je přímý přístup:

note.setPriority(AppConstants.PRIORITY_HIGH);

Druhou možností je implementace rozhraní AppConstants třídou, v jejímž kódu potřebujeme konstanty rozhraní použít:

public class MyClass implements AppConstants {
    ...

    note.setPriority(PRIORITY_HIGH);

    ...
}

Třída MyClass ve své hlavičce implementuje rozhraní AppConstants.

Třída Note

Nyní ve struktuře projektu vytvoříme novou třídu Note, reprezentující datový model poznámek. Ve složce notepad vytvoříme další složku s názvem objects a v ní novou třídu Note:

public class Note {

}

Proměnné

Ve třídě Note deklarujeme tyto proměnné:

private int id;
private String noteTitle;
private String noteContent;

private long date;
private int priority;
private boolean isActive;

Popis proměnných:

  • id: Hodnota typu int s ID poznámky, přiděleným databází při uložení poznámky.
  • noteTitle: Textový řetězec String s nadpisem poznámky.
  • noteContent: Textový řetězec String s obsahem poznámky.
  • date: Hodnota typu long s datem vytvoření poznámky v milisekundách.
  • priority: Číslo typu int s číselným kódem priority poznámky. Budeme používat tři úrovně důležitosti poznámky, které máme připravené jako konstanty v rozhraní AppConstants.
  • isActive: Hodnota typu boolean sloužící k označení poznámky jako (ne)aktivní. Neaktivní znamená, že ji aktuálně nepotřebujeme, ale chceme ji nechat uloženou v databázi. V seznamu poznámek bude mít šedou barvu pozadí.

Konstruktory

Dále ve třídě Note deklarujeme dva konstruktory:

public Note() {}

public Note(int id, String noteTitle, String noteContent, long date, int priority, boolean isActive) {
    this.id = id;
    this.noteTitle = noteTitle;
    this.noteContent = noteContent;
    this.date = date;
    this.priority = priority;
    this.isActive = isActive;
}

Nejprve jsme deklarovali bezparametrický konstruktor. V druhém parametrickém konstruktoru přijímáme všechny parametry. Parametrický konstruktor použijeme při vytváření nové poznámky a při převodu surových dat načtených z databáze na objekty typu Note.

Deklaruje-li třída konstruktor s parametry, nelze v kódu projektu použít konstruktor bez parametrů např. Note n = new Note();. Explicitní deklarací bezparametrického konstruktoru obnovíme možnost jeho použití.

Gettery a settery

Nakonec ve třídě Note deklarujeme sadu klasických getterů a setterů:

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getNoteTitle() {
    return noteTitle;
}

public void setNoteTitle(String noteTitle) {
    this.noteTitle = noteTitle;
}

public String getNoteContent() {
    return noteContent;
}

public void setNoteContent(String noteContent) {
    this.noteContent = noteContent;
}

public long getDate() {
    return date;
}

public void setDate(long date) {
    this.date = date;
}

public int getPriority() {
    return priority;
}

public void setPriority(int priority) {
    this.priority = priority;
}

public boolean isActive() {
    return isActive;
}

public void setActive(boolean active) {
    isActive = active;
}

V příští lekci, Databáze v Androidu - Třída SQLiteOpenHelper, si pomocí Java kódu nadefinujeme strukturu budoucí databáze poznámkového bločku.


 

Všechny články v sekci
Databáze v Androidu
Přeskočit článek
(nedoporučujeme)
Databáze v Androidu - Třída SQLiteOpenHelper
Článek pro vás napsal Pavel
Avatar
Uživatelské hodnocení:
5 hlasů
Autor se věnuje programování v Javě, hlavně pro Android. Mezi jeho další zájmy patří Arduino, Minecraft.
Aktivity