2012-11-24 6 views
4

cette question pourrait être très noobish mais je ne suis pas capable de trouver une bonne solution.Fragments multiples avec différents expandableList pour les mêmes données

Voici mon problème:

Je veux ne pas afficher les données (un java.util.List avec mon TaskObjects) dans plusieurs ExpandableLists (permet de dire 5) chacun dans un propre Fragment afin que l'utilisateur est en mesure de glisser entre les différentes listes. Au moment j'ai un MainFragmentActivity qui contient le java.util.List, le PageViewer et un « étendu » FragmentPagerAdapter (comme TabsAdapter) qui contient les onglets AllTaskFragment et OverDueTaskFragment. Ces deux Fragments ont chacun un ExpandableList et ExpandableListAdapter (écrit par moi).

Maintenant, lorsque l'utilisateur clique sur un enfant dans ExpandableLists comment dois-je informer les autres fragments ExpandableListAdapter pour mettre à jour? J'ai essayé d'appeler le MainFragmentActivity et à partir de là appelez tous les fragments, mais les fragments ExpandableListAdapters étaient «nulles», mais pourquoi?

mise à jour:

Je suppose que je résolu la question, atm travaille avec:

Si quelque chose change dans toute ExpandableListAdapter, j'appelle updateTabs() dans

MainFragmentActivity

public void updateTabs() { 
     for(int i = 0 ; i < tabsAdapter.getCount() ; i++) { 
      UpdateableFragment updateableFragment = (UpdateableFragment) getSupportFragmentManager().findFragmentByTag(makeFragmentName(mViewPager.getId(),i)); 
      updateableFragment.updateFragment(); 
     } 
    } 

    private String makeFragmentName(int viewId, int index){ 
     return "android:switcher:" + viewId + ":" + index; 
    } 

qui appelle simplement dans ea ch fragment la méthode

public void updateFragment() { 
     adapter.notifyDataSetChanged(); 
} 

Est-ce une bonne approche? Ou cela va-t-il soulever quelques problèmes?

+1

Veuillez fournir un échantillon de code. – david

Répondre

0

L'essentiel pour de telles applications est de garder une trace des ArrayAdapters. Si vous appelez ArrayAdapter.notifyDataSetChanged(), il indiquera sa vue à mettre à jour.

+0

J'ai essayé avec une interface 'UpdateableFragment' qui a une méthode de mise à jour et mis cela sur les Fragments pour appeler l'adaptateur que j'ai stocké dans une variable d'instance, mais chaque fois que la méthode a été appelée, j'ai une NullPointerException pour l'adaptateur. .. public void updateFragment() {adapter.notifyDataSetChanged();} – StupidBird

+0

Comment avez-vous obtenu 'l'adaptateur'? – PearsonArtPhoto

+0

Je le stocke comme une instance de la classe. protected ExpandableListTaskAdapter adapter; – StupidBird

Questions connexes