package io.github.javiewer.fragment.genre; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import java.util.LinkedHashMap; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import io.github.javiewer.JAViewer; import io.github.javiewer.R; import io.github.javiewer.adapter.ViewPagerAdapter; import io.github.javiewer.adapter.item.Genre; import io.github.javiewer.fragment.ExtendedAppBarFragment; import io.github.javiewer.network.provider.AVMOProvider; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class GenreTabsFragment extends ExtendedAppBarFragment { @BindView(R.id.genre_tabs) public TabLayout mTabLayout; @BindView(R.id.genre_view_pager) public ViewPager mViewPager; @BindView(R.id.genre_progress_bar) public ProgressBar mProgressBar; public ViewPagerAdapter mAdapter; public GenreTabsFragment() { // Required empty public constructor } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mAdapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager()); mViewPager.setAdapter(mAdapter); mTabLayout.setupWithViewPager(mViewPager); Call<ResponseBody> call = JAViewer.SERVICE.getGenre(); call.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { mProgressBar.setVisibility(View.GONE); try { LinkedHashMap<String, List<Genre>> genres = AVMOProvider.parseGenres(response.body().string()); GenreFragment fragment; for (String title : genres.keySet()) { fragment = new GenreFragment(); fragment.getGenres().addAll(genres.get(title)); mAdapter.addFragment(fragment, title); } mAdapter.notifyDataSetChanged(); mTabLayout.setVisibility(View.VISIBLE); } catch (Throwable e) { onFailure(call, e); } } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { t.printStackTrace(); } }); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_genre, container, false); ButterKnife.bind(this, view); return view; } }