IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Application des contacts en GridView


Sujet :

Android

  1. #1
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut Application des contacts en GridView
    Bonjour,
    Voilà je veux réaliser une application où je peux importer mes contacts téléphoniques, et le mettre sous forme d'une GridView, j'ai déjà fait ça mais j'ai abouti à un résultat pas très satisfaisant : voici mon code :

    Code java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    package com.example.android.GridMenu;
     
    import android.app.Activity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.provider.Contacts.People;
    import android.widget.GridView;
     
    import android.widget.SimpleCursorAdapter;
     
    public class GridMenu extends Activity {
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            Cursor c = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
            startManagingCursor(c);
     
            GridView grid = ((GridView) this.findViewById(R.id.grid01));
     
            SimpleCursorAdapter adpt = new SimpleCursorAdapter(this, 
                    android.R.layout.simple_list_item_2,
                    c, 
                    new String[] {People.NAME, People.NUMBER} ,
                    new int[] {android.R.id.text1,android.R.id.text2}); 
     
            grid.setAdapter(adpt);
     
        }
     
    }
    code XML pour l'interface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
     
        <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/Title"
        />
     
        <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/grid01"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:columnWidth="90dp"
        android:stretchMode="columnWidth"
        android:gravity="center"
        />
     
    </LinearLayout>

    et je veux pas juste obtenir le nom et le prénom dans la gridview, mais sous formes de dossiers ou widgets auxquelles on peut accéder, puis avoir tous les infos sur le contact ( tous ses numéros, e-mail, adresse, facebook, .... ) et puis traiter ses infos.

    Svp si vous pouvez m'aider à passer cette étape car je décroche un peu
    et merci d'avance

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 142
    Par défaut
    Il te faudrait une classe hériter de BaseAdapter qui de créerait une View pour chaque contact, ensuite tu fais un listener pour que lors du click sur un contact une action soit effectué.

    Pour l'adapter ça marche comme ça, mais là on retourne une imageview donc c'est pas top, toi ce sera plutôt un LinearLayout par exemple :
    http://developer.android.com/guide/t...-gridview.html

    Donc je te conseille ça :
    http://mickael-lt.developpez.com/tut...iser-listview/

  3. #3
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    Merci beaucoup thierrybenji,

    oui ce que je veux est un peu proche de ça, et si vous pourrez me dire comment faire pour que ma gridview de l'application soit sous forme d'une gridview de dossiers avec des icônes et ça, ou des widgets ( auxquels on gérera le clic comme t'as dit avec un listener ) et pas une grid view de nom du contact et son numéro, car la mienne donne ce dernier résultat.

    Pour la list view je vois totalement le truc, et je sais que ça doit être une listview pour chaque contact après ouvrir le dossier avec par exemple une structure comme celle là :

    -nom de contact avec un bouton d'édition
    -numéro 1 avec un bouton d'appel et de message
    -numéro 2 avec un bouton d'appel et de message
    ....
    -numéro n avec un bouton d'appel et de message
    -e-mail avec un bouton de messagerie électronique
    -facebook contact avec un bouton qui me permettras d'accéder à une page de facebook login et mot de passe puis directement au mur de cette personne
    -type du contact ( famille, bureau, .... )
    -Anniversaire
    et d'autres options si je trouve
    avec un menu d'options et d'édition en dessous
    et j'ai une petite idée pour faire ça

    mais si tous simplement vous me dites d'autres options de contacts si vous trouvez et comment agir avec les drawables de ces contacts car je veux que chaque contact aura un drawable qui s'affichera dans la grid view ( que ça soit dans l'image du dossier ou widget, je ne sais pas le meilleur choix )

    et merci beaucoup encore, je sais que j'ai beaucoup demandé

  4. #4
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 142
    Par défaut
    Je te l'ai déjà dis, tu dois créer une classe hérité de BaseAdapter, à l'intérieur tu réécris la méthode getView, moi ce que je fais c'est que j'ai un fichier layout en xml qui défini ma vue pour chaque élément de la liste et dans la méthode getView je récupère mon fichier layout et je le "personnalise" pour chaque élément.
    Bon j'explique mal en gros je fais exactement comme ça :
    http://mickael-lt.developpez.com/tut...iser-listview/

    Là ce que tu peux faire, c'est créer ta classe contact, avec tout les infos dont tu as besoin.
    Ensuite tu créer un layout qui va être utilisé par chaque entré de la gridview.
    Tu créer aussi un layout pour afficher les détails d'un contact.

    Ensuite tu créer la classe hérité de BaseAdapter, dedans tu mettras une ListArray de ta classe contact, non mais ça sert à rien que j'explique, tout est mieux expliqué dans le lien.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour,

    Si ça cloche à l’exécution, ton logcat doit te dire ce qui se passe.
    Donc si tu veux qu'on t'aide il faut nous afficher l'exception.

  6. #6
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    voici ce que le logcat affiche après la terminaison de l'application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    05-09 17:25:10.157: DEBUG/AndroidRuntime(744): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    05-09 17:25:10.167: DEBUG/AndroidRuntime(744): CheckJNI is ON
    05-09 17:25:10.616: INFO/jdwp(744): received file descriptor 20 from ADB
    05-09 17:25:10.646: DEBUG/AndroidRuntime(744): --- registering native functions ---
    05-09 17:25:12.166: DEBUG/AndroidRuntime(744): Shutting down VM
    05-09 17:25:12.176: DEBUG/dalvikvm(744): DestroyJavaVM waiting for non-daemon threads to exit
    05-09 17:25:12.186: DEBUG/dalvikvm(744): DestroyJavaVM shutting VM down
    05-09 17:25:12.207: DEBUG/dalvikvm(744): HeapWorker thread shutting down
    05-09 17:25:12.216: DEBUG/dalvikvm(744): HeapWorker thread has shut down
    05-09 17:25:12.216: DEBUG/jdwp(744): JDWP shutting down net...
    05-09 17:25:12.226: DEBUG/jdwp(744): +++ peer disconnected
    05-09 17:25:12.226: INFO/dalvikvm(744): Debugger has detached; object registry had 2 entries
    05-09 17:25:12.246: DEBUG/dalvikvm(744): VM cleaning up
    05-09 17:25:12.276: DEBUG/dalvikvm(744): LinearAlloc 0x0 used 629804 of 4194304 (15%)
    05-09 17:25:12.966: DEBUG/AndroidRuntime(753): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    05-09 17:25:12.976: DEBUG/AndroidRuntime(753): CheckJNI is ON
    05-09 17:25:13.406: DEBUG/AndroidRuntime(753): --- registering native functions ---
    05-09 17:25:13.426: INFO/jdwp(753): received file descriptor 20 from ADB
    05-09 17:25:15.016: INFO/ActivityManager(570): Starting activity: Intent { action=android.intent.action.MAIN categories={android.intent.category.LAUNCHER} flags=0x10000000 comp={com.example.android.gridcontact/com.example.android.gridcontact.Main} }
    05-09 17:25:15.117: DEBUG/AndroidRuntime(753): Shutting down VM
    05-09 17:25:15.117: DEBUG/dalvikvm(753): DestroyJavaVM waiting for non-daemon threads to exit
    05-09 17:25:15.156: DEBUG/dalvikvm(753): DestroyJavaVM shutting VM down
    05-09 17:25:15.187: DEBUG/dalvikvm(753): HeapWorker thread shutting down
    05-09 17:25:15.196: DEBUG/dalvikvm(753): HeapWorker thread has shut down
    05-09 17:25:15.217: DEBUG/jdwp(753): JDWP shutting down net...
    05-09 17:25:15.226: DEBUG/jdwp(753): +++ peer disconnected
    05-09 17:25:15.226: INFO/dalvikvm(753): Debugger has detached; object registry had 1 entries
    05-09 17:25:15.247: DEBUG/dalvikvm(753): VM cleaning up
    05-09 17:25:15.387: INFO/ActivityManager(570): Start proc com.example.android.gridcontact for activity com.example.android.gridcontact/.Main: pid=761 uid=10026 gids={}
    05-09 17:25:15.427: DEBUG/dalvikvm(753): LinearAlloc 0x0 used 639228 of 4194304 (15%)
    05-09 17:25:15.576: INFO/jdwp(761): received file descriptor 20 from ADB
    05-09 17:25:15.706: WARN/System.err(761): Can't dispatch DDM chunk 4d505251: no handler defined
    05-09 17:25:16.276: ERROR/DatabaseUtils(612): Writing exception to parcel
    05-09 17:25:16.276: ERROR/DatabaseUtils(612): java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider uri content://contacts/people from pid=761, uid=10026 requires android.permission.READ_CONTACTS
    05-09 17:25:16.276: ERROR/DatabaseUtils(612):     at android.content.ContentProvider$Transport.checkReadPermission(ContentProvider.java:193)
    05-09 17:25:16.276: ERROR/DatabaseUtils(612):     at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:111)
    05-09 17:25:16.276: ERROR/DatabaseUtils(612):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:97)
    05-09 17:25:16.276: ERROR/DatabaseUtils(612):     at android.os.Binder.execTransact(Binder.java:287)
    05-09 17:25:16.276: ERROR/DatabaseUtils(612):     at dalvik.system.NativeStart.run(Native Method)
    05-09 17:25:16.276: DEBUG/AndroidRuntime(761): Shutting down VM
    05-09 17:25:16.276: WARN/dalvikvm(761): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761): Uncaught handler: thread main exiting due to uncaught exception
    05-09 17:25:16.276: ERROR/AndroidRuntime(761): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.gridcontact/com.example.android.gridcontact.Main}: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider uri content://contacts/people from pid=761, uid=10026 requires android.permission.READ_CONTACTS
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.app.ActivityThread.access$1800(ActivityThread.java:112)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.os.Looper.loop(Looper.java:123)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.app.ActivityThread.main(ActivityThread.java:3948)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at java.lang.reflect.Method.invoke(Method.java:521)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at dalvik.system.NativeStart.main(Native Method)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761): Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider uri content://contacts/people from pid=761, uid=10026 requires android.permission.READ_CONTACTS
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.os.Parcel.readException(Parcel.java:1234)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:145)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:111)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.content.ContentProviderProxy.bulkQuery(ContentProviderNative.java:279)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.content.ContentProviderProxy.query(ContentProviderNative.java:298)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.content.ContentResolver.query(ContentResolver.java:149)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at com.example.android.gridcontact.Main.onCreate(Main.java:23)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
    05-09 17:25:16.276: ERROR/AndroidRuntime(761):     ... 11 more
    05-09 17:25:16.276: INFO/Process(570): Sending signal. PID: 761 SIG: 3
    05-09 17:25:16.276: INFO/dalvikvm(761): threadid=7: reacting to signal 3
    05-09 17:25:16.276: INFO/dalvikvm(761): Wrote stack trace to '/data/anr/traces.txt'
    05-09 17:25:25.087: WARN/ActivityManager(570): Launch timeout has expired, giving up wake lock!
    05-09 17:25:25.907: WARN/ActivityManager(570): Activity idle timeout for HistoryRecord{437226b8 {com.example.android.gridcontact/com.example.android.gridcontact.Main}}
    05-09 17:25:31.186: DEBUG/dalvikvm(612): GC freed 2154 objects / 125000 bytes in 213ms
    05-09 17:25:45.306: INFO/Process(761): Sending signal. PID: 761 SIG: 9
    05-09 17:25:45.336: INFO/ActivityManager(570): Process com.example.android.gridcontact (pid 761) has died.
    05-09 17:25:45.776: WARN/InputManagerService(570): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43736a20
    merci pour votre aide d'avance

  7. #7
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    Et c'est pas pour le code en haut, j'ai changé mon code un peu :

    code JAVA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    package com.example.android.gridcontact;
     
    import android.app.Activity;
    import android.content.ContentUris;
    import android.content.Context;
    import android.database.Cursor;
    import android.graphics.Bitmap;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.Contacts.People;
    import android.provider.Contacts.People.Phones;
    import android.view.View;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.SimpleCursorAdapter;
     
    public class Main extends Activity {
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            Cursor c = getContentResolver().query(People.CONTENT_URI, null,null, null, null);
            startManagingCursor(c);
     
            GridView grid = ((GridView) this.findViewById(R.id.grid01));
     
            MyCursorAdapter adapter = new MyCursorAdapter(this, 
                    android.R.layout.simple_list_item_2,c,
                    new String[] { Phones.NAME },
                    new int[] { R.id.contacts });
     
            grid.setAdapter(adapter);
        } 
     
     
    public class MyCursorAdapter extends SimpleCursorAdapter {
    	     private Cursor c;
    	     private Context context;
     
    	     public MyCursorAdapter(Context context, int layout, Cursor c,
    	             String[] from, int[] to) {
     
    	         super(context, layout, c, from, to);
    	         this.c = c;
    	         this.context = context;
     
    	     }
     
     
    	     public void bindView(View view, Context context, Cursor cursor) {
     
    	         ImageView imageView = (ImageView)view.findViewById(R.id.contact_image);
     
    	         int id = this.c.getColumnIndex(android.provider.Contacts.Phones.PERSON_ID); 
    	         Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, this.c.getLong(id));
     
    	         Bitmap bitmap = People.loadContactPhoto(this.context, uri,R.drawable.icon, null);
     
    	         imageView.setImageBitmap(bitmap);
     
    	         super.bindView(view, context, cursor);
    	     }
     
        }
    }
    Code XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         xmlns:android="http://schemas.android.com/apk/res/android">
         <ImageView android:id="@+id/contact_image" 
             android:gravity="top"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />
         <TextView android:id="@+id/contacts"
             android:gravity="bottom"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:textSize="20px" />
         <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/grid01"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:columnWidth="90dp"
        android:stretchMode="columnWidth"
        android:gravity="center"
        />    
     
     </LinearLayout>

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour,
    cette ligne t'indique ce qui ne va pas. En plus il est gentil, il te dit ce qu'il faut rajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    05-09 17:25:16.276: ERROR/DatabaseUtils(612): java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider uri content://contacts/people from pid=761, uid=10026 requires android.permission.READ_CONTACTS

  9. #9
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    ça veut dire que j'ai besoin d'un simple read_contacts dans mon android manifest comment peut on oublier, je me vois stupide là

  10. #10
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    Merci pour la clarification, mais là je reçois d'autres erreurs que j'ai pas compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    05-10 19:30:34.264: ERROR/AndroidRuntime(753): Uncaught handler: thread main exiting due to uncaught exception
    05-10 19:30:34.314: ERROR/AndroidRuntime(753): java.lang.IllegalStateException: get field slot from row 0 col -1 failed
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.database.CursorWindow.getLong_native(Native Method)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.database.CursorWindow.getLong(CursorWindow.java:329)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:108)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.database.CursorWrapper.getLong(CursorWrapper.java:127)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at com.example.android.gridcontact.Main$MyCursorAdapter.bindView(Main.java:56)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.CursorAdapter.getView(CursorAdapter.java:186)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.AbsListView.obtainView(AbsListView.java:1269)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.GridView.onMeasure(GridView.java:926)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.View.measure(View.java:7115)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:619)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:280)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.View.measure(View.java:7115)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.View.measure(View.java:7115)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.View.measure(View.java:7115)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.View.measure(View.java:7115)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.ViewRoot.performTraversals(ViewRoot.java:698)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.os.Looper.loop(Looper.java:123)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at android.app.ActivityThread.main(ActivityThread.java:3948)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at java.lang.reflect.Method.invoke(Method.java:521)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at dalvik.system.NativeStart.main(Native Method)
    d'après ce qui est dit, l'erreur comme le montre ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    05-10 19:30:34.264: ERROR/AndroidRuntime(753): Uncaught handler: thread main exiting due to uncaught exception
    05-10 19:30:34.314: ERROR/AndroidRuntime(753): java.lang.IllegalStateException: get field slot from row 0 col -1 failed
    et je pense que ça doit être dans ma méthode bindView en ce qui concerne getColumnIndex ou quelque chos comme ça, et merci pr l'aide

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour, Montres nous ta fonction BindView et soulignes nous la ligne 56

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    05-10 19:30:34.314: ERROR/AndroidRuntime(753):     at com.example.android.gridcontact.Main$MyCursorAdapter.bindView(Main.java:56)

  12. #12
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    package com.example.android.gridcontact;
     
    import android.app.Activity;
    import android.content.ContentUris;
    import android.content.Context;
    import android.database.Cursor;
    import android.graphics.Bitmap;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.Contacts.People;
    import android.provider.Contacts.People.Phones;
    import android.view.View;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.SimpleCursorAdapter;
     
    public class Main extends Activity {
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            Cursor c = getContentResolver().query(People.CONTENT_URI, null,null, null, null);
            startManagingCursor(c);
     
            GridView grid = ((GridView) this.findViewById(R.id.grid01));
     
            MyCursorAdapter adapter = new MyCursorAdapter(this, 
                    android.R.layout.simple_list_item_2,c,
                    new String[] { Phones.NAME },
                    new int[] { R.id.contacts });
     
            grid.setAdapter(adapter);
        } 
     
     
    public class MyCursorAdapter extends SimpleCursorAdapter {
    	     private Cursor c;
    	     private Context context;
     
    	     public MyCursorAdapter(Context context, int layout, Cursor c,
    	             String[] from, int[] to) {
     
    	         super(context, layout, c, from, to);
    	         this.c = c;
    	         this.context = context;
     
    	     }
     
     
    	     public void bindView(View view, Context context, Cursor cursor) {
     
    	         ImageView imageView = (ImageView)view.findViewById(R.id.contact_image);
     
    	         int id = this.c.getColumnIndex(android.provider.Contacts.Phones.PERSON_ID); 
    	         Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, this.c.getLong(id));
     
    	         Bitmap bitmap = People.loadContactPhoto(this.context, uri,R.drawable.icon, null);
     
    	         imageView.setImageBitmap(bitmap);
     
    	         super.bindView(view, context, cursor);
    	     }
     
        }
    }
    et la ligne 56 est comme indiquée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, this.c.getLong(id));

  13. #13
    Membre actif
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    est ce que vous pouvez me montrer où est l'erreur SVP ??

Discussions similaires

  1. J2ME comment ajouter des contacts dans une application
    Par kakashi05 dans le forum Java ME
    Réponses: 4
    Dernier message: 11/01/2009, 18h09
  2. Réponses: 8
    Dernier message: 23/01/2007, 21h02
  3. connaitre les adresses IP des contacts sur msn
    Par starway dans le forum Messagerie instantanée
    Réponses: 6
    Dernier message: 28/10/2005, 20h39
  4. Comment récupérer la liste des contacts de outlook express?
    Par arnaud_verlaine dans le forum Outlook Express / Windows Mail
    Réponses: 6
    Dernier message: 12/10/2004, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo