Prosty przykład z wykorzystaniem SQLite - https://github.com/dawidsamolyk/SimpleDatabase
Do bazy dodawane są procesory (CPU), ale liczba danych na ich temat jest bardzo okrojna. Jeśli ktoś chce to może to sobie bardzo łatwo rozszerzyć.
Prosty przykład z wykorzystaniem SQLite - https://github.com/dawidsamolyk/SimpleDatabase
Do bazy dodawane są procesory (CPU), ale liczba danych na ich temat jest bardzo okrojna. Jeśli ktoś chce to może to sobie bardzo łatwo rozszerzyć.
Prowadzący zajęcia chciał, aby w pierwszej wersji aplikacji ładować wszystko z bazy do ArrayListy i dopiero wrzucać do ListView, a w kolejnej wersji operować bezpośrednio na bazie danych. Mi nie chciało się robić dwa razy, więc od razu zaimplementowałem opcję nr 2.
To podejście ma swoje wady i zalety, ale uważam, że nie bez powodu w SDK jest klasa SimpleCursorAdapter, więc po co się bawić z tablicami itp.
- - - Aktualizacja - - -
A tak poza tym to nie lubię programować na Androida. Pisanie kodu jest ******liwe i czasami jak widzę pewne pomysły twórców tej platformy to robię facepalma...
Nie no, ja tak tylko kontrolnie, po prostu każdy kursor to kolejne otwarte połączenie, status, pamięć w buforach itepe. W tym przypadku możliwe, że inaczej się nie da albo wpływ na wydajność jest niewielki, ale widziałem już parę aplikacji typu klient/serwer, gdzie np. 10 klientów właśnie przetwarzaniem kursorami potrafili doprowadzić do zatrzymania aplikacji.
- - - Aktualizacja - - -
I obcinałem za to ręce.
- - - Aktualizacja - - -
A Twój kod jest i tak zdecydowanie lepszy i przyjaźniejszy do lektury niż to, z czym się zmagam ostatniospaghetti na potęgę....
Z tym, że jeśli mnie pamięć i statyczna analiza kodu nie myli, kursor pobieram tylko raz - w MainActivity w linijce
Oczywiście tutaj nie ma bezpośredniego pobrania kursora, bo tak na prawdę wywołania "przelatują" przez 2 kolejne klasy, ale ostatecznie wygląda na to, że kursor jest pobierany tylko raz. Te zabezpieczenia przed nullami robiłem chyba profilaktycznieKod:list.setAdapter(dbHelper.cursorAdapter(this, rowsInListView));
- - - Aktualizacja - - -
U mnie w pracy potrafią w pętli zrobić takiego try-catch'a, że głowa pęka, a wewnątrz niego jest tworzenie anonimowej klasy, która definiuje wątek, który jest od razu uruchamiany i coś jeszcze po tym jest wykonywane. Oczywiście przed tą wielką pętlą jest jeszcze kilka instrukcji, więc całość zajmuje 2-3 ekrany.
Link nie działa, można prosić nowy ?![]()
Nie wiem czemu Dawid usuwa z repo rzeczy, limitu przecież nie ma... pewnie się już wstydzi swojego starego kodu![]()
| Intel Core i7 2700K @ 4,5 GHz 1,35V | Gigabyte Z68X-UD3H LGA1155 | Kingston Savage 2x8 GB @ 2133 MHz CL9 1.65V |
| 2x Samgate F3 500GB HD502HJ - Hybrid RAID 0+1 | Kingston HyperX 3K 240GB SATA III | Corsair VS650 |
| Gigabyte GeForce GTX 970 4GB Gaming G1 @ 1550/7200 MHz | Xonar DX | BitFenix Shinobi | Dell P2414H 24" 1080p AH-IPS |