ciao a tutti
Spesso implementare un Database SQL è laborioso, soprattutto se si ha la necessità di più tabelle all'interno del DB.
La libreria ActiveAndroid ci viene in aiuto semplificando di molto l'implementazione. Fondamentalmente si tratta di una libreria "annotation based", dovremo solo creare delle classi specifiche e alcuni metodi "helper" per la manipolazione del DB. l'implementazione mediamente non richiede più di una decina di minuti
Informazioni Base su ActiveAndroid:
- Per Ogni classe java creata che estende la classe Model, la libreria creerà una tabella all'interno del DB per gli elementi (classe MyDbRow estende Model ==> Tabella MyDbRow nel DB che conterrà tutti gli elementi MyDbRow)
- Nelle classi che estendono Model è possibile "linkare" altre classi "Model" ( Item(Model) <==> Category(Model))
- L'ID degli elementi inseriti è autoassegnato, se vi serve un ID fisso dovrete creare un'altra colonna per i vostri ID
- La manipolazione degli elementi del DB è semplicissima.
Implementazione Base:
Manifest.xml
Dovrete aggiungere queste 2 righe all'interno del tag <Application>
1
2<meta-data android:name="AA_DB_NAME" android:value="Pickrand.db" />
3<meta-data android:name="AA_DB_VERSION" android:value="5" />
4
AA_DB_NAME = Nome del DB
AA_DB_VERSION = Versione del DB
Se la vostra app non ha nessuna classe che estende Application aggiungete anche questa parte al tag <application>
31
2<application android:name="com.activeandroid.app.Application".. ...
3
Se invece avete creato una vostra classe che estende Application, cambiate l'import dell'estensione da android.app.Application a com.activeandroid.app.Application
Creazione di un Modello:
Dovrete creare almeno una classe java che estende Model. Come accennato sopra le Classi possono essere "collegate", come vedrete qui sotto, la classe Item possiede anche una variabile Category, la quale corrisponde ad un altro elemento presente in una tabella separata
Item.java:
201
2<a rel="nofollow" href="https://www.androidiani.com/forum/members/tab.html" target="_blank">tab</a>le(name = "Items")
3public class Item extends Model {
4// If name is omitted, then the field name is used.
5<a rel="nofollow" href="https://www.androidiani.com/forum/members/col.html" target="_blank">col</a>umn(name = "Name")
6public String name;
7
8<a rel="nofollow" href="https://www.androidiani.com/forum/members/col.html" target="_blank">col</a>umn(name = "Category")
9public Category category;
10
11public Item(){
12super();
13}
14public Item(String name, Category category){
15super();
16this.name = name;
17this.category = category;
18}
19}
20
151
2<a rel="nofollow" href="https://www.androidiani.com/forum/members/tab.html" target="_blank">tab</a>le(name = "Categories")
3public class Category extends Model {
4<a rel="nofollow" href="https://www.androidiani.com/forum/members/col.html" target="_blank">col</a>umn(name = "Name")
5public String name;
6
7public Category() {
8super();
9}
10
11public List<Item> items() {
12return getMany(Item.class, "Category");
13}
14}
15
Gestione degli elementi:
La gestione è veramente semplice:
Salvataggio:
101
2Category restaurants = new Category();
3restaurants.name = "Restaurants";
4restaurants.save();
5
6Item item = new Item();
7item.category = restaurants;
8item.name = "Outback Steakhouse";
9item.save();
10
Eliminazione elementi:
31
2new Delete().from(Item.class).where("Id = ?", 1).execute();
3
Ottenere tutti gli elementi della tabella "Item" (List<Item>()):
91
2public static List<Item> getAll(Category category) {
3return new Select()
4.from(Item.class)
5.where("Category = ?", category.getId()) //opzionale
6.orderBy("Name ASC")
7.execute();
8}
9
Ottenere un singolo elemento:
81
2public static Item getItem(String name) {
3return new Select()
4.from(Item.class)
5.where("Name = ?", name)
6.executeSingle();
7}
8
Come vedete l'implementazione è molto veloce e semplice
Per approfondimenti sulla libreria, dato che è vastissima, vi rimando alla wiki ufficiale su github ==> https://github.com/pardom/ActiveAndr...etting-started
Enjoy!![]()