我必须在我的活动中创建一个异步http请求,并在使用PagerAdapter添加到ViewPager的两个片段中显示结果。
考虑到可以在http请求完成之前创建ViewPager和Fragments,我该怎么做?
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comic_book);
imageViewProfile = (SimpleDraweeView) findViewById(R.id.imageViewProfile);
collapsingToolbar =
(CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
// Configuring the toolbar as the actionbar
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
setupTabLayout(tabLayout);
// Getting parameters
final Intent intent = getIntent();
id = intent.getIntExtra("id", 0);
String name = intent.getStringExtra("name");
collapsingToolbar.setTitle(name);
}
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
}
private void setupTabLayout(TabLayout tabLayout) {
tabLayout.setupWithViewPager(viewPager);
}
public int getId() {
return this.id;
}
private void getComicBookInfo(final Integer id) {
final ComicBookActivity activity = (ComicBookActivity) getActivity();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
ComicBookService service = ApiFactory.comicBookService();
try {
final Response<List<ComicBookResponse>> response =
service.get(id.toString()).execute();
if (response.isSuccess() &&
response.body() != null &&
response.body().size() > 0) {
final ComicBookResponse comicBook = response.body().get(0);
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
@Override
public void onFragmentInteraction(Uri uri) {
}
class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new AboutComicBookFragment();
case 1:
return new ComicBookChaptersFragment();
default:
return null;
}
}
@Override
public int getCount() {
return TAB_PAGE_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.label_about);
case 1:
return getString(R.string.label_chapters);
default:
return null;
}
}
}