Android Listview pas mise à jour

J'ai un ListView avec un adaptateur personnalisé, affichant des informations à partir d'une base de données. Lorsque je lance l'application, les données sont lues à partir de la base de données, fournies à l'adaptateur, qui est ensuite attaché à ListView. Un LayoutAnimationController est exécuté sur ListView, affichant le contenu en douceur.

this._lvList = (ListView)_v.findViewById(R.id.lvList); this._lvList.setAdapter(new TableAdapter(getActivity(),R.layout.tablerow,Category.getCategories())); LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(getActivity(), R.anim.slide_in_left)); lac.setDelay(0.2f); this._lvList.setLayoutAnimation(lac); this._lvList.startLayoutAnimation(); 

Aucun problème du tout.

  • Android OpenGL ES 2.0: La syntaxe "switch-case" est-elle possible dans le fragment shad GLSL sur Samsung Galaxy S2?
  • Android.process.acore s'est arrêté de façon inattendue
  • Android AdB (OSX Lion) ne reconnaît pas Galaxy Nexus, Jelly Bean
  • Enregistrer la sortie audio Android
  • Comment configurer l'heure et la date du système mobile dans Android?
  • Android sauvegardant le fichier sur le stockage externe
  • Maintenant, lorsque je clique sur une entrée de ListView, les entrées qui n'ont pas été cliquées disparaissent, l'entrée cliquée devient la seule entrée dans la liste et s'affiche en haut, comme prévu.

     View v; for(int i = 0;i<_lvList.getChildCount();i++) { v = this._lvList.getChildAt(i); if(v!=clickedView) { Animation animSlideOut = AnimationUtils.loadAnimation(getActivity(), i%2==0?R.anim.slide_out_left:R.anim.slide_out_right); animSlideOut.setStartOffset(i*50); // some more stuff } v.startAnimation(animSlideOut); } 

    Cela fonctionne aussi, mais maintenant le problème, si je clique de nouveau sur cette entrée de liste unique, je veux que la liste se repete, affichant à nouveau tous les éléments.

    Je pensais pouvoir utiliser le code dès le début (le premier extrait), car il fonctionne bien lors du démarrage de l'application, mais … cette fois … ce n'est pas le cas. Aucune animation ne se produit. La raison en est, il n'y a pas de vues à animer dans mon ListView (sauf celui de l'étape précédente).

    Au lieu de créer un nouveau Tableadapter, j'ai déjà essayé de l'effacer, complétez-le, appelé notifyDataSetChanged () … inutilité, comme

     _lvList.getChildCount(); 

    Les images fixes renvoient 1 vue, tandis que l'adaptateur contient les 18 entrées. J'ai aussi essayé

     requestLayout(); forceLayout(); invalidate(); invalidateViews(); 

    Pour forcer le ListView à générer ses vues enfants avant l'animation, mais cela ne fonctionne pas. Donc, atm the ListView apparaît instantanément, certains après mon appel à l'animation de mise en page.

    Sommaire: mon ListView ne contient aucune vue enfant avant le début de l'animation de mise en page, comment puis-je la forcer à les générer?

    Thx à l'avance 🙂

  • Fusionner ou Rebase ou Branch Default Dans Android Studio? Quelles sont les différences?
  • Exécutez une ROM personnalisée sur Android Emulator
  • OS X 10.6.6 et "périphériques adb" ne parviennent pas à répertorier les périphériques Android
  • Effet d'ondulation pour les vues de lollipop
  • Envoyer des valeurs de l'activité ViewPager à un Fragment par lot
  • Problème de défilement d'Android ViewPager avec un seul élément lors de l'utilisation de getPageWidth depuis PagerAdapter
  • One Solution collect form web for “Android Listview pas mise à jour”

    Hmm … avez-vous déjà fait cela? (au dessous de)

    Dans votre adaptateur personnalisé, remplacer la méthode:

     @Override public View getView(int position, View convertView, ViewGroup parent){ //the position of the item, the convertView is the view layout of what that row is } 

    Pour modifier la façon dont la liste est mise à jour. Cette méthode getView est appelée par Android tous les temps pour rafraîchir la vue (vous ne l'appelez pas manuellement)

    Aussi, je pense que vous devez seulement appeler

    listView.notifiyDataSetChanged() et listView.invalidate() pour forcer la mise à jour, après avoir repeuplé la liste

    Vous pouvez en savoir plus sur les listes ici:

    http://www.vogella.com/articles/AndroidListView/article.html

    http://developer.android.com/guide/topics/ui/layout/listview.html

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.