Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

1. diel - Databáza v Androide - Vytvorenie ukážkového projektu

Vitajte pri seriáli o ukladaní dát do databázy v Androide.

Postupne si ukážeme dva spôsoby programovania databázy - staršie a novšie. Vďaka tomu bude výklad rozdelený do dvoch samostatných celkov.

Najprv budeme pracovať na projekte, ktorý bude s databázou pracovať základným (starším) spôsobom. Po dokončení projektu ho upravíme pre použitie novšieho spôsobu práce s databázou (knižnica Room).

Samozrejmosťou bude aj ukážkový projekt v podobe jednoduchého poznámkového bločku, ktorý bude nové poznámky ukladať do databázy. Táto databáza bude umiestnená v úložisku zariadenia, na ktorom aplikácia pobeží.

Na hlavnej obrazovke ukážkovej aplikácie bude zobrazovaný zoznam uložených poznámok. Po kliknutí na ľubovoľnú poznámku bude v dialógovom okne zobrazený jej obsah. Každej poznámke budeme môcť nastaviť prioritu (Nízká, Střední alebo Vysoká), ktorá bude mať vplyv na farbu poznámky v zozname poznámok. Tiež bude možné akúkoľvek poznámku označiť ako neaktívnu.

Hlavné okno aplikácie bude vyzerať takto:

Databázy v Androide

Detail poznámky:

Databázy v Androide

Vytvorenie novej poznámky:

Databázy v Androide

Vytvorenie projektu Notepad

Presunieme sa do okna so šablónami. V ľavej časti okna vyberieme možnosť Phone and Tablet. V pravej časti okna vyberieme možnosť Empty Activity:
Databázy v Androide

V ďalšom okne, do políčka Name, zadáme názov nášho projektu Notepad. Do políčka Package name napíšeme cz.itnetwork.notepad. Pretože budeme programovať v Jave, vyberieme v políčku Language možnosť Java:

Databázy v Androide

Po dokončení nastavenia projektu je zobrazené vývojové prostredie Android štúdia, v ktorom vidíme otvorené vygenerované súbory MainActivity.java a activity_main.xml:

Databázy v Androide

Súbor strings.xml

Do súboru strings.xml ukladáme textové řetězce použité v projekte. V Java kóde, alebo XML kóde na ne iba odkazujeme. Súbor res/values/strings.xml patrí medzi súbory automaticky generované Android štúdiom pri vytvorení projektu:
Databázy v Androide

Do súboru strings.xml pridáme nasledujúce riadky:

<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>

Rozhranie AppConstants

Rozhranie AppConstants vytvoríme z dôvodu prehľadnosti kódu projektu. Jeho účelom je vytvoriť úložisko konštánt použitých v projekte. V prípade tohto projektu to nie je nutné, pretože budeme deklarovať iba tri konštanty. V rozsiahlejších projektoch je to veľmi užitočné.

V štruktúre projektu klikneme pravým tlačidlom myši na zložku notepad av zobrazenom menu, cez položku New, zvolíme možnosť Java Class:

Databázy v Androide

V zobrazenom okne doplníme do prvého textového políčka názov nového rozhrania, v našom prípade AppConstants. Pod textovým políčkom označíme možnosť Interface a potvrdíme stlačením klávesu Enter:

Databázy v Androide

Tu je vždy defaultne vybraná možnosť Class. Ak by sme zabudli túto možnosť prepnúť na Interface, bola by namiesto rozhrania vytvorená klasická trieda.

Vytvorený súbor AppConstants.java otvoríme a doplníme týmito tromi riadkami:

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

Rozhranie AppConstants môžeme v projekte použiť dvoma spôsobmi. Prvým spôsobom je priamy prístup:

note.setPriority(AppConstants.PRIORITY_HIGH);

Druhou možnosťou je implementácia rozhrania AppConstants triedou, v kóde ktorej potrebujeme konštanty rozhrania použiť:

public class MyClass implements AppConstants {
    ...

    note.setPriority(PRIORITY_HIGH);

    ...
}

Trieda MyClass vo svojej hlavičke implementuje rozhranie AppConstants.

Trieda Note

Teraz v štruktúre projektu vytvoríme novú triedu Note, reprezentujúcu dátový model poznámok. V zložke notepad vytvoríme ďalšiu zložku s názvom objects av nej novú triedu Note:
public class Note {

}

Premenné

V triede Note deklarujeme tieto premenné:
private int id;
private String noteTitle;
private String noteContent;

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

Popis premenných:

  • id: Hodnota typu int s ID poznámky, prideleným databázou pri uložení poznámky.
  • noteTitle: Textový reťazec String s nadpisom poznámky.
  • noteContent: Textový reťazec String s obsahom poznámky.
  • date: Hodnota typu long s dátumom vytvorenia poznámky v milisekundách.
  • priority: Číslo typu int s číselným kódom priority poznámky. Budeme používať tri úrovne dôležitosti poznámky, ktoré máme pripravené ako konštanty v rozhraní AppConstants.
  • isActive: Hodnota typu boolean slúžiaca na označenie poznámky ako (ne)aktívna. Neaktívne znamená, že ju aktuálne nepotrebujeme, ale chceme ju nechať uloženú v databáze. V zozname poznámok bude mať šedú farbu pozadia.

Konštruktory

Ďalej v triede Note deklarujeme dva konštruktory:
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;
}

Najprv sme deklarovali bezparametrický konštruktor. V druhom parametrickom konštruktore prijímame všetky parametre. Parametrický konštruktor použijeme pri vytváraní novej poznámky a pri prevode surových dát načítaných z databázy na objekty typu Note.

Ak deklaruje trieda konštruktor s parametrami, nie je možné v kóde projektu použiť konštruktor bez parametrov napr. Note n = new Note();. Explicitnou deklaráciou bezparametrického konštruktora obnovíme možnosť jeho použitia.

Gettery a settery

Nakoniec v triede Note deklarujeme sadu klasických getterov a setterov:
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 budúcej lekcii, Databázy v Androide - Trieda SQLiteOpenHelper , si pomocou Java kódu nadefinujeme štruktúru budúcej databázy poznámkového bločku.


 

Všetky články v sekcii
Databázy v Androide
Preskočiť článok
(neodporúčame)
Databázy v Androide - Trieda SQLiteOpenHelper
Článok pre vás napísal Pavel
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v Javě, hlavně pro Android. Mezi jeho další zájmy patří Arduino, Minecraft.
Aktivity