Android ExpandableListView et de Base de données SQLite
J'ai deux tables dans ma base de données - les chambres et les périphériques. Chaque chambre peut avoir de nombreux appareils. Je veux faire une extensible listview avec salle de nom de groupe, et des dispositifs de nom et de l'état comme des enfants (on ou off).
Quelqu'un peut-il me donner une idée toute simple parce que je suis un peu nouveau avec Android et tous les tutoriels sont difficiles à faire
C'est ma base de données:
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists rooms (
id_room integer primary key autoincrement, "
+ "name_room text not null"
+ ");");
db.execSQL("create table if not exists devices (
id_device integer primary key autoincrement, "
+ "name_device text not null,"
+ "state_device text not null,"
+ "id_room references rooms"
+ ");");
}
OriginalL'auteur Miz Rah | 2012-05-17
Vous devez vous connecter pour publier un commentaire.
La suite est très simple, pas de fioritures liste extensible mise en œuvre.
Vous avez besoin de deux méthodes dans votre db classe d'aide à rassembler les curseurs vous aurez besoin.
Ensuite, vous devez configurer votre adaptateur (en activité):
Et finalement l'appel de l'adaptateur et de le régler à votre liste (en activité):
Espérons que cette aide!
MODIFIER
Il devrait tous se réunir de la sorte:
EDIT 2
Pour attraper clics, définissez les auditeurs en activité:
Ah, que le code était dans un fragment, de sorte qu'il ne serait y travaillent. Vous pouvez essayer en utilisant
this
au lieu de cela, ouyouractivity.this
.J'ai essayé d'utiliser cela, mais comme u peut voir MyExpandableListAdapter() n'est pas une activité ??!!
Ah, je crois que je vois ce que votre question est... MyExpandableListAdapter doit être contenue dans une activité, il n'est pas propre à la classe. L'adaptateur doit être dans la même activité que la liste en l'appelant. Je vais modifier ma réponse à l'expliquer.
Puis l'un (ou les deux) des colonnes
name_device
oustate_device
n'existent pas dans votre curseur. Depuis que nous avons tiré toutes les colonnes à l'aide deSELECT *
, ils devraient être là. J'ai pris les noms de colonne, vous avez démontré dans votre post original. Vous aurez besoin de savoir ce que les noms corrects sont et de les utiliser. Ou vous pouvez simplement utiliser l'indice de référence(0 et 1).OriginalL'auteur Barak