Listview ne se met pas à jour avec l'appel notifydatasetchanged ()

C'est mon code

listview =(ListView) findViewById(R.id.lv1); ArrayList<SClass> Monday = new ArrayList<SClass>(); SClass s1=new SClass(); s1.sName="samp"; s1.salary=1000; Monday.add(s1); temp=Monday; adapter = new CustomAdap(this, temp); listview.setAdapter(adapter); 

Le code ci-dessus fonctionne bien. Mais lorsque je change mon code à cela

  • Le clavier Soft cache la moitié de EditText
  • Android.support.v4.app.FragmentTransaction requis
  • Problème lors de l'élimination de l'élément de clustermanager
  • SetRotation (90) pour prendre une photo en mode portrait ne fonctionne pas sur les périphériques Samsung
  • Détection de l'appel sortant et de l'événement d'interruption d'appel dans Android
  • Alignez les icônes de la barre d'outils de droite à gauche?
  •   listview =(ListView) findViewById(R.id.lv1); adapter = new CustomAdap(this, temp); SClass s1=new SClass(); s1.sName="samp"; s1.salary=1000; Monday.add(s1); temp=Monday; listview.setAdapter(adapter); adapter.notifyDataSetChanged(); 

    La liste ne montre rien. Quel est le problème?

  • Impossible de trouver com.google.android.gms: services de lecture: 3.1.59 3.2.25 4.0.30 4.1.32 4.2.40 4.2.42 4.3.23 4.4.52 5.0.77 5.0.89 5.2.08 6.1. 11 6.1.71 6.5.87
  • SurfaceView.getHolder ne retourne pas SurfaceHolder
  • Définir l'onglet par défaut pour la configuration Fragment / ViewPager
  • Erreur lors du projet de construction dans Android Studio
  • Thèmes Android: définissez les couleurs / gradients dans "baseTheme.xml", utilisez les contrôles, passez en "subThemeX.xml"
  • Android 5.0: comment passer à l'écran Vue d'ensemble Tâche Titre de la couleur du fond
  • 4 Solutions collect form web for “Listview ne se met pas à jour avec l'appel notifydatasetchanged ()”

    Il semble que vous modifiez la collection avec laquelle vous avez initialisé l'adaptateur. Je changerais votre code de cette manière:

     // initial setup listview =(ListView) findViewById(R.id.lv1); ArrayList<SClass> Monday = new ArrayList<SClass>(); adapter = new CustomAdap(this, Monday); listview.setAdapter(adapter); // change your model Monday here, since it is what the adapter is observing SClass s1=new SubjectClass(); s1.sName="samp"; s1.salary=1000; Monday.add(s1); // notify the list that the underlying model has changed adapter.notifyDataSetChanged(); 

    Notez que si votre CustomAdap était une sous-classe de ArrayAdapter, vous pourriez également l'avoir fait

     // change your array adapter here SClass s1=new SubjectClass(); s1.sName="samp"; s1.salary=1000; adapter.add(s1); // notify the list that the underlying model has changed adapter.notifyDataSetChanged(); 

    EDIT: Je comprends plus ce que vous voulez faire maintenant grâce à votre commentaire. Vous voudrez probablement que l'adaptateur remplace son contenu par celui de vos différents ArrayLists. Je ferais de votre CustomAdap une sous-classe de ArrayAdapter.

    Ensuite, vous pouvez l'utiliser de cette façon:

     // replace the array adapters contents with the ArrayList corresponding to the day adapter.clear(); adapter.addAll(MONDAY); // notify the list that the underlying model has changed adapter.notifyDataSetChanged(); 

    Pourquoi cela fonctionne-t-il dans le premier code?

    — Parce que vous définissez les valeurs dans la liste temp et que vous la transmettez à l' adapter et qu'elle s'affiche dans la listview .

    Pourquoi ne pas travailler dans le second code?

    — Parce que vous mettez temporairement l'adaptateur avant même que vous ajustiez la valeur dans la temp
    Deuxièmement, votre classe d'adaptateur pourrait ne pas obtenir la valeur mise à jour lorsque vous définissez une nouvelle valeur sur temp .. parce que temp n'est pas public ou non au niveau de la classe ou n'est pas statique .. Placez la déclaration temp au niveau racine et essayez.

    Et s'il vous plaît, indiquez votre code complet autant que nécessaire et Logcat si vous recevez des avertissements aussi.

    Vérifiez un lien vers votre vue référencée dans le fichier xml approprié. Ou au moins vérifier l'existence de ce fichier xml.

    Quel adaptateur utilisez-vous? Il est évident que votre adaptateur ne se met pas à jour après avoir configuré les données dans votre variable temporaire.

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