2011-05-09 46 views
0

我必須標籤,新建和報告。在「報告」選項卡中,我創建了一個動態創建的列表視圖。現在,正在從數據庫中提取列表視圖列表項。因此,每次加載「報告」選項卡時,必須從數據庫中提取列表視圖列表項以防列表項目發生更改。如果我把所有這些東西放在REPORTS選項卡的onCreate中,一切都完美無缺。但是,如果我切換到另一個選項卡並切換回REPORTS選項卡,則會填充列表視圖,但不會反映列表項中數據庫中所做的更改。每當我回到REPORTS選項卡時,我需要從數據庫中獲取當前數據並顯示在列表視圖中。在android應用程序中按需創建標籤內容

所以問題是因爲我在onCreate中進行listview的填充,這隻發生一次。在網上瀏覽後,我發現了TabContentFactory()的東西。那麼,我認爲這會解決我的問題。這是我所做的,

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

但這並不能解決我的問題。它看起來像createTabContent內部的代碼僅在創建選項卡時執行,而不是每次切換到「報告」選項卡時執行。

這可以完成嗎?每當我們切換到標籤頁時,我們是否可以創建標籤的內容? 請幫忙。任何幫助是極大的讚賞。

+0

是您的選項卡視圖還是不同的活動?如果視圖,爲什麼不只是做adapter.notifyDataSetChanged() – jkhouw1 2011-05-09 17:28:46

+0

@ jkhouw1:這些選項卡是不同的活動。 .notifyDataSetChanged()沒有任何區別。 – sherry 2011-05-09 18:02:37

回答

1

在tabview中,嘗試將數據加載到onResume方法中。

+0

我真的希望這可以工作。但是將數據加載到onResume中也不起作用。 – sherry 2011-05-09 18:03:27

+0

它的工作!謝謝!當我調用onResume()時,我犯了一個錯誤。我在做onResume(Bundle savedInstanceState)而不是onResume()。非常感謝。我從過去的3小時一直在這裏。我一直在想我應該能夠通過TabHost.TabContentFactory或setOnTabChangedListener來實現這一點。我完全忘了這個標籤只是一個活動,我可以做onResume()。 – sherry 2011-05-09 18:15:05