2012-11-07 30 views
0

想象一下有一個MainActivity其中有ListViewArrayAdapter。在屬於MainActivity的視圖中,我直接更新數據;例如,在我的PageAdapter類:如何更好地同步視圖和數據

@Override 
public void finishUpdate(View arg0) { 
    ViewPager vp = (ViewPager) arg0; 
    if (vp.getCurrentItem() != this.current_item){ 
     this.current_item = vp.getCurrentItem(); 
     ContentStatus status; 
     switch(vp.getCurrentItem()){ 
     case(0): 
      status = ContentStatus.NOTINTERESTING; 
      break; 
     case(2): 
      status = ContentStatus.INTERESTING; 
      break; 
     default: 
      status = ContentStatus.ACTIVE; 
     } 
     MainActivity.content.setItemStatus(content.identifier, status); 
     final Activity act = (Activity) this.context; 
     ArrayAdapter adapter = (ArrayAdapter) ((ListView) act.findViewById(R.id.view_sequence)).getAdapter(); 
     adapter.notifyDataSetChanged(); 
    } 
} 

我需要複製該代碼從MainActivity打開並使用相同的數據的另一個活動,因爲如果用戶改變來自其他活動的一些數據,然後將其關閉並返回到MainActivity我必須重繪MainActivity的意見。作爲一個變種,我應該使用ActivityonResume()方法來更新所有視圖的綁定數據?

回答

1

我應該使用activitie的onResume方法來更新所有具有綁定數據的視圖嗎?

簡答題?是的 - 如果您的活動的視圖狀態可能會在每次活動暫停和恢復時更改,那麼在簡歷上更新它們是有意義的。如果你願意的話,這更符合'安卓方式' - 兩項活動不應該互相影響,除非它們以某種方式處理相同的數據。如果他們使用相同的數據,則可以考慮將第二個活動改爲Fragment;這樣所有與該位數據相關的操作都與具有多個片段的單個活動相關聯。

+0

是。保留片段中的大部分邏輯並告訴片段在onResume()中自行恢復。 – dmon

1

一個簡單的解決方案是告訴適配器數據改變了,當回到第一個活動時,這樣視圖將被刷新。因此,在您MainActivity

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    ((AdapterYouAreUsing) listView.getAdapter()).notifyDataSetChanged(); 
} 

假設你與startActivityForResult()方法開始你的第二個活動。或者您需要撥打onResume()之一撥打notifyDataSetChanged()

相關問題