0

想象有一个MainActivity其中有一个ListView带有一个的ArrayAdapter。在属于MainActivityI 的视图中直接更新数据;例如,在我的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();
    }
}

我需要在另一个从 Activity 打开MainActivity并使用相同数据的活动中重现此代码,因为如果用户更改其他活动的一些数据然后关闭它并返回到 MainActivity 我必须重绘MainActivity视图。作为一种变体,我应该使用Activity'sonResume()方法来更新所有绑定到数据的视图吗?

4

2 回答 2

1

我应该使用活动的 onResume 方法来更新所有绑定到数据的视图吗?

简短的回答?是的 - 如果您的活动的视图状态可能会在每次活动暂停和恢复时发生变化,那么在恢复时更新它们是有意义的。如果您愿意,这更符合“android 方式”——两个活动不应相互影响,除非它们以某种方式处理相同的数据。如果他们使用相同的数据,您可以考虑将您的第二个活动Fragment改为 a;这样,与该数据位相关的所有操作都与具有多个片段的单个活动相关联。

于 2012-11-07T20:33:39.073 回答
1

一个简单的解决方案是告诉适配器数据发生了变化,当回到第一个活动时,这样视图将被刷新。所以在你的MainActivity

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

假设您正在使用该startActivityForResult()方法开始您的第二个活动。或者你将不得不打电话给notifyDataSetChanged()那个onResume()

于 2012-11-07T20:44:19.163 回答