2012-11-24 75 views
4

這個問題可能很不好,但我只是無法找到一個正確的解決方案。多個片段與不同expandableList的相同數據

因此,這裏是我的問題:

我想不顯示在多個ExpandableLists數據(與我TaskObjects一個java.util.List)(可以說5)各在自己的片段,使用戶能刷卡在不同的列表之間。 目前我有MainFragmentActivity,其中包含java.util.ListPageViewer和一個'擴展'FragmentPagerAdapter(如TabsAdapter),其中包含標籤AllTaskFragmentOverDueTaskFragment。這兩個片段分別擁有自己的ExpandableListExpandableListAdapter(由我書寫)。

現在當用戶點擊任何ExpandableLists中的某個子項時,我如何需要通知其他片段ExpandableListAdapter進行更新?我試圖調用MainFragmentActivity,然後從那裏調用所有片段,但片段ExpandableListAdapters爲'null',但爲什麼?

更新:

如果事情在任何ExpandableListAdapter變化,我叫updateTabs()在

MainFragmentActivity

我想我解決了這個問題,ATM是有工作

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; 
    } 

它只是調用ea ch片段方法

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

這是一個很好的方法嗎?或者這可能會引發一些問題?

+1

請提供代碼示例。 – david

回答

0

這種應用程序的關鍵是要跟蹤ArrayAdapter。如果您致電ArrayAdapter.notifyDataSetChanged(),它會告訴它更新的觀點。

+0

我嘗試了一個接口'UpdateableFragment',它有一個update-Method,並通過Fragments來調用我存儲在一個實例變量中的適配器,但每次調用該方法時,都會爲該適配器得到一個NullPointerException。 .. public void updateFragment(){adapter.notifyDataSetChanged();} – StupidBird

+0

你是如何獲得'adapter'的? – PearsonArtPhoto

+0

我將它作爲類的一個實例存儲。 保護ExpandableListTaskAdapter適配器; – StupidBird

相關問題