活动中的Http请求并将结果传递给ViewPager中的片段

时间:2016-01-18 00:41:04

标签: android android-fragments android-viewpager

我必须在我的活动中创建一个异步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;
        }
    }
}

0 个答案:

没有答案