+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable Android

    Avatar de Feanorin
    Profil pro
    Inscrit en
    avril 2004
    Messages
    4 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 4 590
    Points : 8 872
    Points
    8 872

    Par défaut Tutoriel sur la présentation du composant graphique « RecyclerView » sous Android

    Bonjour,

    Vous trouverez ici Tutoriel sur la présentation du composant graphique « RecyclerView » sous Android.

    Ce tutoriel va s'intéresser à un nouveau composant qui est le RecyclerView permettant d'afficher une liste d'articles dans un ensemble de sous-vues.
    N'hésitez pas à réagir.

    Bonne lecture.

    Merci.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    4 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 4 520
    Points : 11 581
    Points
    11 581

    Par défaut

    Pour mémoire , l'affichage de liste d'articles sous Android se faisait via le composant ListView, GridView, etc. Ces composants avaient quelques ralentissements lorsque nous affichions leurs articles (items).
    Tu parles du cas où il sont implémenté sans ViewHolder ? Parce que avec un viewHolder j'ai jamais eu de problème de perf (bon j'ai pas non plus des liste de 10k éléments).

    Du peu que j'ai testé le RecyclerView semble bien pratique (enfin une liste horizontale !) mais un peu plus complexe à mettre en place.

    Par contre j'ai l'impression qu'on perd complètement la possibilité d'utiliser un CursorAdapter de base et qu'il faut passer par un tableau intermédiaire. Non ?

    Le lien vers le dépot github ne fonctionne pas
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Responsable Android

    Avatar de Feanorin
    Profil pro
    Inscrit en
    avril 2004
    Messages
    4 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 4 590
    Points : 8 872
    Points
    8 872

    Par défaut

    Tu parles du cas où il sont implémenté sans ViewHolder ?
    Oui exactement . Le recyclerView oblige ce pattern.

    Par contre j'ai l'impression qu'on perd complètement la possibilité d'utiliser un CursorAdapter de base et qu'il faut passer par un tableau intermédiaire. Non ?
    Je n'ai pas vu son utilisation mais je pense qu'il y a moyen de créer son propre adapter en se basant sur le code du CursorAdapter, il faudrait regarder mais de base dans la SDK je n'ai rien vu.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2011
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2011
    Messages : 691
    Points : 1 431
    Points
    1 431

    Par défaut NullPointerException

    Bonjour Florian,

    Merci pour ce tutoriel. Il est bien expliqué et je ne peux que .

    Seulement, je n'arrive pas à m'en sortir alors que je reproduis exactement le même code (question de voir comment ça marche ) que tu mis dans le tuto. A chaque exécution j'ai l'erreur suivant :
    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
    07-20 05:37:19.430  19448-19448/com.example.mastermbg.recycleview E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: com.example.chrislonembg.recycleview, PID: 19448
        java.lang.NullPointerException
                at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1694)
                at android.view.View.measure(View.java:16497)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                at android.view.View.measure(View.java:16497)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at android.view.View.measure(View.java:16497)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                at android.view.View.measure(View.java:16497)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
                at android.view.View.measure(View.java:16497)
                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
                at android.view.Choreographer.doCallbacks(Choreographer.java:574)
                at android.view.Choreographer.doFrame(Choreographer.java:544)
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
                at android.os.Handler.handleCallback(Handler.java:733)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:136)
                at android.app.ActivityThread.main(ActivityThread.java:5017)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                at dalvik.system.NativeStart.main(Native Method)
    Mon fichier grandle lui se présente comme suit :
    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
    apply plugin: 'com.android.application'
     
    android {
        compileSdkVersion 22
        buildToolsVersion "23.0.0 rc3"
     
        defaultConfig {
            applicationId "com.example.mastermbg.recycleview"
            minSdkVersion 9
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
     
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.2.0'
        compile 'com.android.support:recyclerview-v7:21.0.0'
    }
    J'exécute sur emulateur avec la version kitkat pour info.

    Pourrais tu m'aider à corriger cette erreur please?

    Merci d'avance.

    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    Responsable Android

    Avatar de Feanorin
    Profil pro
    Inscrit en
    avril 2004
    Messages
    4 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 4 590
    Points : 8 872
    Points
    8 872

    Par défaut

    Salut,

    On dirait que ton problème provient d'un mauvais contexte passé à ton LinearLayoutManager si c'est celui là ?

    T'es tu basé sur le projet github ou bien à tu reconstruis le projet à partir des exemples ?
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  6. #6
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2011
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2011
    Messages : 691
    Points : 1 431
    Points
    1 431

    Par défaut

    Citation Envoyé par Feanorin Voir le message
    Salut,
    T'es tu basé sur le projet github ou bien à tu reconstruis le projet à partir des exemples ?
    Je ne me suis basé sur aucun projet, même pas construit le projet à partir des exemples.
    Je suis entrain de suivre ton tutoriel, j'ai créé un nouveau projet à partir de zéro, j'ai ajouter dans le gradle la ligne "compile 'com.android.support:recyclerview-v7'".
    Quand je synchronise le fichier gradle j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error:Failed to resolve: com.android.support:recyclerview-v7:
    <a href="install.m2.repo">Install Repository and sync project</a><br><a href="openFile">Open File</a>
    Je ne sais plus quoi faire

    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  7. #7
    Membre actif Avatar de IsiTech
    Homme Profil pro
    Développeur mobile
    Inscrit en
    janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : janvier 2012
    Messages : 105
    Points : 266
    Points
    266

    Par défaut

    Ça me parait bizarre de ne pas préciser la version dans la ligne compile, essai la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compile 'com.android.support:recyclerview-v7:22.2.1'
    et vérifie dans le SDK Manager que tu as bien installé "Android Support Library" dans la partie "Extras" (La version indiquée est celle que tu dois utiliser dans la ligne "compile".

    J'ai crée une application utilisant les RecyclerView il y a quelques jours et aucun problème pour moi.

  8. #8
    Responsable Android

    Avatar de Feanorin
    Profil pro
    Inscrit en
    avril 2004
    Messages
    4 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 4 590
    Points : 8 872
    Points
    8 872

    Par défaut

    Ça me parait bizarre de ne pas préciser la version dans la ligne compile
    Normalement il prend la dernière version.

    Il est préférable de mettre la version pour des problème de compatibilité entre lib.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. Composants graphiques complexes sous Android
    Par Feanorin dans le forum Android
    Réponses: 0
    Dernier message: 22/12/2014, 14h27
  2. Composant graphique (Graphe) sur une Image
    Par Aïssa dans le forum C#
    Réponses: 2
    Dernier message: 13/11/2007, 14h05
  3. effectuer des operations sur les composants graphiques
    Par Zorgz dans le forum AWT/SWING
    Réponses: 7
    Dernier message: 19/10/2006, 14h34
  4. Réponses: 4
    Dernier message: 15/12/2005, 22h36

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