Znacząca większość aplikacji wykorzystuje jakiś rodzaj bazy danych. Dziś pokażę jak zaimplementować bazę SQLite oraz jak wyświetlić dane w RecyclerView.

Pierwszą rzeczą jaką powinniśmy zrobić to stworzyć klasę HabitContract z podklasą HabitEntry,  która zawiera tylko nazwy tabel(w tym wypadku tylko jednej) i kolumn. Implementacja interfejsu BaseColumns dodaje nam 2 zmienne – _COUNT(liczba wierszy, w naszym wypadku nie potrzebna) i _ID(unikalne id dla każdego wiersza).

Następnym krokiem jest stworzenie klasy HanitDbHelper, która rozszerza SQLiteOpenHelper. Odpowiadać będzie ona za tworzenie bazy i zarządzanie jej wersją. Na sam początek tworzymy dwie zmienne: DATABASE_VERSION (wersja bazy danych która musi być zwiększana z każdym razem gdy zmieniamy schemat bazy) i DATABASE_NAME (nazwa pliku z bazą na urządzeniu), a następnie domyślny konstruktor.

Musimy jeszcze nadpisać trzy metody onCreate() – w której jak sama nazwa wskazuje tworzymy bazę, onUpgrade() – w której wgrywamy nową wersję bazy i onDowngrade() – w której wgrywamy starszą wersję bazy.

Teraz przerobimy habit_adapter_item.xml HabitAdapter.java. Przystosujemy je do wyświetlania nowych typów danych. Więcej o Adapterze tutaj.

Najważniejszy jest tutaj konstruktor który poza obiektem Context przyjmuje teraz obiekt Cursor. Cursor to nic innego jak wynik zapytania SQL, więc sensowne jest przekazanie go do adaptera. Poza tym ustawiamy jeszcze wartość zwracaną przez getItemCount() na mCursor.getCount().

Ostatnim krokiem jest inicjalizacja bazy. Zrobimy to w MainActivity.java ale najpierw stworzymy metodę insertSampleData() w klasie SampleData.

Ważny jest tutaj blok try-catch-finally, Po wywyłaniu beginTransaction() należy pamiętać o wywołaniu endTansaction() po zakończeniu wszystkich operacji. Zapobiegnie to wyciekowi pamięci.

Teraz w MainActivity tworzymy metodę która zwróci kursor z potrzebnymi nam kolumnami.

I wreszcie ostatni krok. Tworzymy zmienną mDb, inicjalizujemy zmienną dbHelper w onCreate, a następnie za jej pomocą przypisujemy bazę umożliwiającą zapis do mDb. Przypisanie bazy umożliwiającej zapis jest niezbędne gdyż chcemy wprowadzić trochę przykładowych dany za pomocą insertSampleData(). Na sam koniec tworzymy Cursor za pomocą getAllHabits() i podajemy go do konstruktora HabitAdapter.

Efekt naszych działań prezentuje się tak:

Podziel się z innymi!Share on Facebook
Facebook
Share on Google+
Google+
Tweet about this on Twitter
Twitter