Spinner android et sqlite3 sous android studio

souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015 - 12 mars 2015 à 14:55
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 16 mars 2015 à 10:36
Bjr a tous,

dans ma base données sqlite, j'ai 2 tables produit(code, designation,prix, famille_prod(foreign key de (codefamill) la table famille_prod) et famille_produit(codeFam, nomFam).

j'ai pu remplir un spinner avec ma liste de famille (nomFam) afin de sélectionner à quelle famille appartient mon produit. mais je ne sais pas comment determiner que dans la table produit je veux qu'il m'affiche dans la colonne famille_prod, le code de la famille selectionnée dans le spinner.
c'est a dire que je veux selectionner le nomFam dans le spinner et remplir la table produit avec le "code" de la famille selectionnée.

merci
A voir également:

1 réponse

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
12 mars 2015 à 15:35
Hello,

Ce n'est pas très très clair... Qu'est-ce qui te bloque?
Les bases de données, ce n'est clairement pas pas tasse de thé, mais bêtement, je dirais qu'il faut faire une requête du type:

select * in produit where famille_prod = {ici ton 'code'} 

0
merci d'avoir pris la peine de me répondre.
je t'explique plus en détails:
j'ai une "fiche produit" a remplir avec le code du produit, la designation, et la famille produit.
la famille produit est un spinner dans lequel se trouve tous les nom de famille des produits.
dans ma base de données, j'ai deux tables produit (code, designation,famille (foreign key de code_famille) et famille(code_famille, designation).
ce que je souhaite avoir, c'est quand je veux ajouter un produit et que je selectionne, dans mon interface de fiche produit, la famille_produit dans le spinner...je voudrais avoir le 'id' de la famille selectionnée dans la colonne code_famille de la table produit.
voila, j'espére que c'est plus clair.. merci
0
mon probléme n'est pas en base de données mais plus dans le programme.je veux dire que j'ai utilisé le
spinner.getItemSelectedId() mais ca ne marche pas, il m'affiche dans la colonne en question " android.database.sqlite.SQLiteCursor@b22879d8 " au lieu de m'afficher l'id!!
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
12 mars 2015 à 16:51
ça dépend comment tu remplis ton Spinner.
A priori, tu utilises des CursorAdapter. Dans ton onItemSelected(), il faut faire grosso modo ceci:

Cursor cursor = (Cursor)parent.getItemAtPosition(pos);
int id = cursor.getInt(c.getColumnIndexOrThrow("columm_name"));
0
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
16 mars 2015 à 10:33
merci pr ta réponse, au fait j'ai juste utiliser "mon_spinner.getSelectedItemId()" de type "long" et sa a marché. mais merci comme même.

j'arrive a ajouter mes données a partir du spinner dans l base de données et j'arrive aussi a recuperer , les données specifiques a un produit grace a son "code" , vers le spinner.

mais maintenant, j'ai un autre souci qui est:
je veux faire defiler la liste des produits que j'ai enregistrer avec un bouton du premier jusqu'au dernier.... j'arrive a le faire avec les editText mais pas avec le spinner!
voici mes 4méthodes : pour aller vers le premier,dernier, précédent et suivant enregistrement dans la table produit :

public void premierProduit(View view){

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

c = bd.rawQuery("select * from Produits order by code asc ", null);

if (c.moveToFirst()) {
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));


}
else
Toast.makeText(this, "Aucun enregistrement effectué" ,Toast.LENGTH_SHORT).show();
bd.close();
}


public void precedentProduit(View view){

try {
if (!c.isFirst()) {
c.moveToPrevious();
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));

} else
Toast.makeText(this, "Début de la liste",Toast.LENGTH_SHORT).show();
}catch (Exception e){
e.printStackTrace();
}
}


je ne sais pas comment ajouter l'appel pour mon spinner!!
merci


public void suivantProduit(View view){
try {
if (!c.isLast()) {
c.moveToNext();
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));

} else
Toast.makeText(this, "Fin de la liste",Toast.LENGTH_SHORT).show();
}catch (Exception e){
e.printStackTrace();
}
}

public void dernierProduit(View view){

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

c = bd.rawQuery("select * from Produits order by code asc ", null);
if (c.moveToLast()) {
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));

} else
Toast.makeText(this, "Aucun enregistrement effectué" ,Toast.LENGTH_SHORT).show();
bd.close();
}
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103 > souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
16 mars 2015 à 10:36
Content que ton problème initial soit résolu.
Par contre, peux-tu ouvrir un nouveau sujet pour ton nouveau problème, s'il te plait, afin de garder une bonne visibilité?
0
Rejoignez-nous