2011-05-09 2 views
0

Je dois tabulations, nouveaux et rapports. Dans l'onglet RAPPORTS, je crée un listview créé dynamiquement. Maintenant, les éléments de la liste listview sont extraits de la base de données. Ainsi, chaque fois que l'onglet RAPPORTS est chargé, les éléments de la liste listview doivent être extraits de la base de données au cas où il y aurait eu un changement dans les éléments de la liste. Si je mets tout cela dans l'onglet onCreate of REPORTS, tout fonctionne parfaitement. Mais si je passe à un autre onglet et que je repasse à l'onglet RAPPORTS, la liste est remplie mais la modification apportée dans la base de données dans les éléments de la liste n'est pas reflétée. Chaque fois que je reviens à l'onglet RAPPORTS, je dois obtenir les données actuelles de la base de données et les afficher dans la liste.création de contenu d'onglet sur demande dans les applications android

Donc, le problème est que je fais le remplissage de la liste dans onCreate, cela ne se produit qu'une seule fois. Après avoir regardé en ligne, j'ai trouvé le contenu de TabContentFactory(). Eh bien, je pensais que cela résoudrait mon problème. Voilà ce que je l'ai fait,

TabHost.TabSpec reportsSpec = tabHost.newTabSpec("reports").setIndicator("Reports") 
    .setContent(new TabHost.TabContentFactory(){ 
     public View createTabContent(String tag) { 
      Context context = Main_screen.this; 
      ls1 = new ListView(Main_screen.this); 
      //populate m_data from the database 

      CustomAdapter adapter = new CustomAdapter(context, m_data); 
      ls1.setAdapter(adapter);  
      return ls1;}}); 
tabHost.addTab(reportsSpec); 

Mais cela ne résout pas mon problème. Il semble que le code à l'intérieur de createTabContent soit exécuté uniquement lorsque l'onglet est créé et pas chaque fois que je passe à l'onglet RAPPORTS.

Est-ce que cela peut être fait? Pouvons-nous créer le contenu d'un onglet chaque fois que nous passons à l'onglet? S'il vous plaît aider. Toute aide est grandement appréciée.

+0

sont vos onglets Vues ou activités différentes? si vues, pourquoi ne pas simplement adapter.notifyDataSetChanged() – jkhouw1

+0

@ jkhouw1: les onglets sont des activités différentes. .notifyDataSetChanged() n'a fait aucune différence. – sherry

Répondre

1

Dans l'onglet, essayez de placer la charge de données dans la méthode onResume.

+0

J'espérais vraiment que ça marcherait. Mais mettre la charge de données dans onResume ne fonctionnait pas non plus. – sherry

+0

Ça a marché! Je vous remercie! Je faisais une erreur quand j'ai appelé onResume(). Je faisais onResume (Bundle savedInstanceState) au lieu de onResume(). Merci beaucoup. Je suis allé à cela depuis les 3 dernières heures. J'ai continué à penser que je devrais être capable de réaliser cela avec TabHost.TabContentFactory ou setOnTabChangedListener. J'ai complètement oublié que l'onglet était juste une activité et que je pouvais faire onResume(). – sherry

Questions connexes