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

Composants graphiques Android Discussion :

ListView dynamique ne charge pas les items suivants


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 11
    Par défaut ListView dynamique ne charge pas les items suivants
    Bonjour a tous,

    Voila j'essaye de faire une ListeView a partir d'une base de données.

    Ce que je veut faire:
    - Je récupère 20 item, je les affiche.
    - une fois l'utilisateur en bas de la liste j'en charge 20 de plus et ainsi de suite...

    Pour faire ça j'ai créer une class qui extend BaseAdapter.
    Le problème est que les 20 premier charge bien, mais une fois arriver en bas de la liste je n'arrive pas a notifier l'adaptateur que j'ai changer le tableau.

    Voici la methode onScroll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	@Override
    	public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
    	{
    		if(firstVisibleItem + visibleItemCount >= 19*(page-1))
    		{
    			// recuperation et ajout au tableau
    			this.loadNext();
     
                            //J'essaye de lui dire que le tableau a changer.
    			adapter.notifyDataSetChanged();
     
    		}
     
    	}
    Il me dis bien que le tableau change puisque j'ai cette exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131361876, class android.widget.ListView) with Adapter(class com.itema.amoureux.VisitesListAdapter)]

    Merci.

  2. #2
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    Il faut pas toucher aux vues de ta ListView dans un autre thread que le UI thread.
    Essaye avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    runOnUiThread(new Runnable() {
    	    public void run() {
    	          adapter.notifyDataSetChanged();
    	    }
     });

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 11
    Par défaut
    Merci pour t'a réponse,
    j'ai remplace cette ligne: adapter.notifyDataSetChanged(); par ton code.
    Le problème reste le même (la meme exception), et de toute façon ma méthode onScroll() est définie dans le fichier ou je crée la ListView et c'est bien le thread de l'UI.

    EDIT:

    Je viens de trouver le problème --> moi^^
    Oui, je fesai un adapteur pour mon Spinner que j’appelle "adapter" (tout comme celui de ma liste), et du coups confusion entre les deux (bizarre que le compilateur ne me l'ai pas dis).

  4. #4
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    Si tu a crée une classe qui extends baseAdapter (dans un fichier à part), ce que tu fait dans cette classe n'est pas dans le UI thread.
    Seul ce que tu fait dans la classe qui extends Activity ou ListActivity est (potentiellement ) dans le UI thread.

    Comme on a pas plus de bout de code c'est un peu difficile de dire ce qui ne va pas. Si tout est bien dans le UI thread peut être que "adapter" n'est pas bon.

    Edit:
    Le bout de code que j'ai donné est dans un autre fichier que ton Activity ? Si oui ça doit venir de la.

Discussions similaires

  1. Police PFM pas pris en charge pas les WinForms
    Par zicos dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/03/2009, 14h21
  2. DLL ne charge pas les librairies
    Par mercure07 dans le forum Qt
    Réponses: 3
    Dernier message: 10/07/2008, 09h20
  3. Listview qui n'affiche pas les enregistrements
    Par arindor dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 03/10/2007, 16h31
  4. Réponses: 2
    Dernier message: 31/08/2006, 11h20

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