Android + liste course

remyhoussem Messages postés 50 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 16 décembre 2012 - 9 mars 2012 à 17:47
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 11 mars 2012 à 21:05
Aidez moi SVP
j'ai plus que 20 jour entrain de développer une liste d'achat mais j'arrive pas à la réaliser.
je veut quand je clique sur le nom de ma liste
afficher tous les produits appartenant à cette liste.
dans ma base de données j'ai définis 3 tables:
table liste(nom, id_liste)
table produit(nom_produit,id_produit)
table produit_liste(id_liste,id_produit)

quand je clique sur ma liste(OnItemClick) j'appelle cet méthode mais ça me renvoie nullPointerException:
public String[] info_liste(String idliste){

String[] aTableauRetour = new String[3];

String MY_QUERY = "SELECT * FROM table_produit INNER JOIN table_liste_produit ON table_produit.id_produit=table_liste_produit.id_produit WHERE b.id_liste='"+idliste+"'";
Cursor c=mDb.rawQuery(MY_QUERY, null);
c.moveToFirst();
int iPostNom=c.getColumnIndex("nom_produit");
int iPostquantite=c.getColumnIndex("qte_mesure");
int iPostmesure=c.getColumnIndex("unite_mesure");
c.moveToFirst();
String resultNom=c.getString(iPostNom);
String resultqte=c.getString(iPostquantite);
String resultmesure=c.getString(iPostmesure);
aTableauRetour[0]=resultNom;
aTableauRetour[1]= resultqte;
aTableauRetour[2]=resultmesure;

return aTableauRetour;

}
A voir également:

12 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 09:57
Bonjour,

Quelle ligne lève la NullPointerException ?

Tu appelles une méthode sur un objet qui est null, je dirais que c'est dans la configuration de ta base de données que tu as un problème.
0
remyhoussem Messages postés 50 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 16 décembre 2012
10 mars 2012 à 10:46
je t'ai pas compris,
je vous explique un peu qu'est ce que j'ai fais,

j'insérer des produits, donc à chaque fois que je clique sur un bouton ça m'affiche une boite de dialogue , j'entre le nom de mon produit et puis ce produit s'enregistre dans une listeView mais pas dans la base voilà la méthode:
private class OnReadyListener implements MyclassDialog.ReadyListener,
AdapterView.OnItemClickListener, View.OnClickListener {

private ListView mList;

@Override
public void ready(String sQuantite,String sUnite,String sIngredient) {

String[] sNewtext=new String[]{sQuantite,sUnite,sIngredient};

String sNewtextaff="";

aTableauproduit.add(sNewtext);

aTableaupdtaff.add(sQuantite+" "+sUnite+" "+sIngredient);
sNewtextaff=aTableaupdtaff.toString();

mList = (ListView) findViewById(android.R.id.list);
mList.setFastScrollEnabled(true);

final ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getBaseContext(),
android.R.layout.simple_gallery_item,aTableaupdtaff);

mList.setAdapter(adapter2);

et puis je clique sur un bouton save afin que ces produits s'enregistre dans la liste et j'ai utilisé cette méthode d'insertion:
public long insererListe(String sNomListe, ArrayList<String[]> aTableauproduit)
{
long lien = 0;
ContentValues initialValues=new ContentValues();
initialValues.put("nom_list", sNomListe);

long idliste=mDb.insert(TABLE_LISTE, null, initialValues);
int iTaille=aTableauproduit.size();
String []colonne=new String[]{"nom_produit","id_produit"};

for(int j=0;j<iTaille;j++)
{
String sselect=" nom_produit='"+aTableauproduit.get(j)[2]+"'";
Cursor objCursor=mDb.query(TABLE_PRODUIT, colonne, sselect,null, null, null, null);
if(objCursor.getCount()==0)
{
ContentValues initialValuestmp=new ContentValues();
initialValuestmp.put("nom_produit",aTableauproduit.get(j)[2]);
long idtmpcom=mDb.insert(TABLE_PRODUIT, null, initialValuestmp);
ContentValues initiallienstmp = new ContentValues();
initiallienstmp.put("id_liste", idliste);
// initiallienstmp.put("unite_mesure_contenu", aTableauproduit.get(j)[1]);
initiallienstmp.put("id_produit", idtmpcom);
lien = mDb.insert(TABLE_LISTE_PRODUIT, null, initiallienstmp);

}


maintenant je veut qu'on je clique sur le nom de la liste ça m'affiche les differents produits qui appartient à elle,alors j'ai utlisé la méthode que j'ai posté précedement.
je suis totalement bloqué aidez moi svp, j'ai plus que 20 jours mais j'ai pas trouvé une bonne méthode d'afficher une liste course.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 12:13
Et qu'est devenu la nullPointerException ? Quel est ton problème, tu as une exception ou non ? Si oui, quelle ligne la déclenche ?
0
remyhoussem Messages postés 50 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 16 décembre 2012
10 mars 2012 à 13:43
oui l'exception NullPointerException, ça déclenche dans onClickItem.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 15:30
Peux tu me donner la trace de ton exception et me recopier les quelques qui lèvent la nullpointerException : si tu fais ça, normalement, je devrais résoudre ton problème.
0
remyhoussem Messages postés 50 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 16 décembre 2012
10 mars 2012 à 16:55
03-10 15:49:43.685: I/Process(822): Sending signal. PID: 822 SIG: 9
03-10 15:49:50.635: W/KeyCharacterMap(832): No keyboard for id 0
03-10 15:49:50.635: W/KeyCharacterMap(832): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
03-10 15:49:53.774: D/AndroidRuntime(832): Shutting down VM
03-10




15:49:53.774: W/dalvikvm(832): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-10 15:49:53.794: E/AndroidRuntime(832): FATAL




EXCEPTION: main
03-10 15:49:53.794: E/AndroidRuntime(832): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-10



15:49:53.794: E/AndroidRuntime(832): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
03-10 15:49:53.794: E/AndroidRuntime(832):


at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
03-10 15:49:53.794: E/AndroidRuntime(832): at
android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
03-10 15:49:53.794: E/And



roidRuntime(832):

at com.google.android.Fidelity.MaBase.info_liste(MaBase.java:214)
03-10 15:49:53.794:


E/AndroidRuntime(832):


at com.google.android.Fidelity.MaListe.onItemClick(MaListe.java:132)
03-10 15:49:53.794:

E/AndroidRuntime(832):



at android.widget.AdapterView.performItemClick(AdapterView.java:284)
03-10 15:49:53.794:


E/AndroidRuntime(832):




at android.widget.ListView.performItemClick(ListView.java:3513)
03-10 15:49:53.794:



E/AndroidRuntime(832):


at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
03-10 15:49:53.794:


E/AndroidRuntime(832):

at android.os.Handler.handleCallback(Handler.java:587)
03-10 15:49:53.794:

E/AndroidRuntime(832):

at android.os.Handler.dispatchMessage(Handler.java:92)
03-10 15:49:53.794:
E/AndroidRuntime(832):

at android.os.Looper.loop(Looper.java:123)
03-10 15:49:53.794: E/AndroidRuntime(832):

at android.app.ActivityThread.main(ActivityThread.java:3683)
03-10 15:49:53.794:

E/AndroidRuntime(832):

at java.lang.reflect.Method.invokeNative(Native Method)
03-10 15:49:53.794: E/AndroidRuntime(832):


at java.lang.reflect.Method.invoke(Method.java:507)
03-10 15:49:53.794: E/AndroidRuntime(832):

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-10 15:49:53.794: E/AndroidRuntime(832):

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-10 15:49:53.794: E/AndroidRuntime(832):


at
dalvik.system.NativeStart.main(Native Method)
03-10 15:54:53.876: I/Process(832): Sending signal. PID: 832 SIG: 9
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 mars 2012 à 18:02
Ok, je ne vois pas de nullpointerException !

tu as une ArrayOutOfBondException : tu essayes d'accéder au premier élément (le 0) d'un tableau qui est vide.
0
remyhoussem Messages postés 50 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 16 décembre 2012
10 mars 2012 à 22:04
j'ai pas reussi à supprimer l'erreur voici mon code d'insertion dans le tableau:
public long insererListe(String sNomListe, ArrayList<String[]> aTableauproduit)
{
long lien = 0;
ContentValues initialValues=new ContentValues();
initialValues.put("nom_list", sNomListe);

long idliste=mDb.insert(TABLE_LISTE, null, initialValues);
int iTaille=aTableauproduit.size();
String []colonne=new String[]{"nom_produit","id_produit"};

for(int j=0;j<iTaille;j++)
{
String sselect=" nom_produit='"+aTableauproduit.get(j)[1]+"'";
Cursor objCursor=mDb.query(TABLE_PRODUIT, colonne, sselect,null, null, null, null);
if(objCursor.getCount()==0)
{
ContentValues initialValuestmp=new ContentValues();
initialValuestmp.put("nom_produit",aTableauproduit.get(j)[1]);
long idtmpcom=mDb.insert(TABLE_PRODUIT, null, initialValuestmp);
ContentValues initiallienstmp = new ContentValues();
initiallienstmp.put("id_liste", idliste);
// initiallienstmp.put("unite_mesure_contenu", aTableauproduit.get(j)[1]);
initiallienstmp.put("id_produit", idtmpcom);
lien = mDb.insert(TABLE_LISTE_PRODUIT, null, initiallienstmp);

}


else{
int iPostNom = objCursor.getColumnIndex("id_produit");
objCursor.moveToFirst();
String idtmpcomd=objCursor.getString(iPostNom);
//*****************enregistrement lien condiment recette*************
ContentValues initiallienstmp = new ContentValues();
initiallienstmp.put("id_liste", idliste);
// initiallienstmp.put("unite_mesure_contenu", aTableauproduit.get(j)[1]);
initiallienstmp.put("id_produit", idtmpcomd);
lien= mDb.insert(TABLE_LISTE_PRODUIT, null, initiallienstmp);
}
}
return lien;
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 mars 2012 à 09:35
Je pense que l'erreur doit venir de aTableauproduit.get(j)[1]

Je dirais qu'il y a un des tableaux qui ne contient pas deux éléments ( [1] te permet d'accéder au deuxième élément, [0] au premier).
0
remyhoussem Messages postés 50 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 16 décembre 2012
11 mars 2012 à 10:29
j'ai changé 1 par 0 mai j'arrive pas à résoudre le problème.aidez moi SVP
0
remyhoussem Messages postés 50 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 16 décembre 2012
11 mars 2012 à 17:24
j'ai pas réussi à résoudre le problème.peuvez vous m'expliquer un peu j'ai besoin de votre aide
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 mars 2012 à 21:05
Si ca ne change pas le problème, c'est que ton tableau est vide, il ne contient même pas d’élément 0.

Je ne sais pas comment tu appelles la méthode, avec quel tableau en paramètre, mais manifestement, ce n'est pas le bon.
0
Rejoignez-nous