我有一个应用程序可以下载数据,这些数据必须显示在viewpager. 我不知道如何在数据下载中ListFragment adaptername.notifyDataSetChanged()调用AsyncTask。
例如,假设我正在下载未来 7 天的气温预报:
我的应用程序具有以下结构:
MainActivity:开始AsyncTask下载数据onCreate()并让用户选择(button)查看哪一天。单击按钮启动SecondActivity并将日期索引传递给ViewPager(以设置当前视图)。

SecondActivity:包含一个ViewPager包含 7 个相同ListFragments的(列表显示 5 小时内的温度,因此列表有 5 个条目)。MyListFragment:当这个加载它设置adapter显示每个温度(如果数据已下载),否则它将温度设置为"loading..."
现在我的问题是,如果用户等待MainActivity数据下载,他们可以继续ViewPager查看ListFragment温度,没有问题。但是如果他们尝试点击一天并 ViewPager 在下载完成之前加载片段将永远只是说 "loading..."
我需要一种可以在我的 in 中重新加载ListFragment适配器onPostExecute()的AsyncTask方法MainActivity。要做到这一点,虽然我需要能够实际访问正在显示ListFragment的内容。ViewPager如何更新适配器onPostExecute()?
主要活动:
protected void onCreate(Bundle savedInstanceState) {
...
new LoadData().execute();
}
protected class LoadData extends AsyncTask<String, Void, String> {
protected String doInBackground(String... params) {
//Download happens here
}
protected void onPostExecute(String result) {
//I need to tell the viewpager in SecondActivity to reload the ListFragment it is currently showing here
}
}
第二活动
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
private int[] temperatureArray;
public void onCreate(Bundle savedInstanceState) {
...
Intent intent = getIntent();
int[] defaultTemps = {0, 0, 0, 0, 0};
temperatureArray = getIntArrayExtra("temps", defaultTemps);
mPager = (ViewPager) findViewById(R.id.pagerID);
mPager.setCurrentItem(intent.getIntExtra("page", 0));
mPagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
...
public Fragment getItem(int position) {
MyListFragment lf = new MyListFragment();
lf.setTemperatures(temperatureArray);
return lf;
}
}
当我在 AsyncTask 中完成下载时,我需要一种方法来刷新当前显示的片段。