package com.ataulm.basic; import android.app.Activity; import android.os.Bundle; import android.support.annotation.DrawableRes; import android.support.v4.view.ViewPager; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.ataulm.vpa.ViewPagerAdapter; public class MyActivity extends Activity { private ViewPager viewPager; private View[] tabs; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); tabs = new View[]{findViewById(R.id.tab_one), findViewById(R.id.tab_two), findViewById(R.id.tab_three)}; viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.setAdapter(new PagesAdapter(getLayoutInflater())); showPage(0); } public void showPageOne(View view) { showPage(0); } public void showPageTwo(View view) { showPage(1); } public void showPageThree(View view) { showPage(2); } private void showPage(int page) { viewPager.setCurrentItem(page); for (int i = 0; i < tabs.length; i++) { tabs[i].setActivated(i == page); } } private static class PagesAdapter extends ViewPagerAdapter { private static final int PAGE_COUNT = 3; private static final int ITEMS_IN_ROW_SIZE = 3; private final LayoutInflater layoutInflater; PagesAdapter(LayoutInflater layoutInflater) { this.layoutInflater = layoutInflater; } @Override protected View getView(ViewGroup viewGroup, int i) { RecyclerView recyclerView = (RecyclerView) layoutInflater.inflate(R.layout.view_page, viewGroup, false); recyclerView.setLayoutManager(new GridLayoutManager(viewGroup.getContext(), ITEMS_IN_ROW_SIZE)); recyclerView.setAdapter(generateItemAdapter(i)); return recyclerView; } private ItemAdapter generateItemAdapter(int page) { switch (page) { case 0: return new ItemAdapter(15, layoutInflater); case 1: return new ItemAdapter(15, layoutInflater); case 2: return new ItemAdapter(7, layoutInflater); default: throw new RuntimeException("unknown page: " + page); } } @Override public int getCount() { return PAGE_COUNT; } } private static class ItemAdapter extends RecyclerView.Adapter<ItemViewHolder> { private final int size; private final LayoutInflater layoutInflater; ItemAdapter(int size, LayoutInflater layoutInflater) { this.size = size; this.layoutInflater = layoutInflater; } @Override public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = layoutInflater.inflate(R.layout.view_item, parent, false); return new ItemViewHolder(itemView); } @Override public void onBindViewHolder(ItemViewHolder holder, int position) { ((TextView) holder.itemView).setText(String.valueOf(position)); } @Override public int getItemCount() { return size; } } private static class ItemViewHolder extends RecyclerView.ViewHolder { public ItemViewHolder(View itemView) { super(itemView); } } }