TabLayout and ViewPager

Viewpager is used to slide/swipe through data in connection with fragments.


AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.codeexpo.sample_tabs">

  <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/MyMaterialTheme">
      <activity
          android:name="com.codeexpo.sample_tabs.TabsActivity"
          android:label="Electronic Shop">
          <intent-filter>
              <action android:name="android.intent.action.MAIN" />

              <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
      </activity>
  </application>

</manifest>
MainActivity.java
public class TabsActivity extends AppCompatActivity {

  private Toolbar toolbar;
  private TabLayout tabLayout;
  private ViewPager viewPager;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_simple_tabs);

      toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);

      getSupportActionBar().setDisplayHomeAsUpEnabled(true);

      viewPager = (ViewPager) findViewById(R.id.viewpager);
      setupViewPager(viewPager);

      tabLayout = (TabLayout) findViewById(R.id.tabs);
      tabLayout.setupWithViewPager(viewPager);
  }

  private void setupViewPager(ViewPager viewPager) {
      ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
      adapter.addFragment(new OneFragment(), "Smart Phone");
      adapter.addFragment(new TwoFragment(), "Tablet");
      adapter.addFragment(new ThreeFragment(), "Laptop");
      viewPager.setAdapter(adapter);
  }
}
activity_main.xml
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <android.support.design.widget.AppBarLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

      <android.support.v7.widget.Toolbar
          android:id="@+id/toolbar"
          android:layout_width="match_parent"
          android:layout_height="?attr/actionBarSize"
          android:background="?attr/colorPrimary"
          app:layout_scrollFlags="scroll|enterAlways"
          app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

      <android.support.design.widget.TabLayout
          android:id="@+id/tabs"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          app:tabMode="fixed"
          app:tabGravity="fill"/>
  </android.support.design.widget.AppBarLayout>

  <android.support.v4.view.ViewPager
      android:id="@+id/viewpager"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
ViewPagerAdapter.java
public class ViewPagerAdapter extends FragmentPagerAdapter {
  private final List<Fragment> mFragmentList = new ArrayList<>();
  private final List<String> mFragmentTitleList = new ArrayList<>();

  public ViewPagerAdapter(FragmentManager manager) {
      super(manager);
  }

  @Override
  public Fragment getItem(int position) {
      return mFragmentList.get(position);
  }

  @Override
  public int getCount() {
      return mFragmentList.size();
  }

  public void addFragment(Fragment fragment, String title) {
      mFragmentList.add(fragment);
      mFragmentTitleList.add(title);
  }

  @Override
  public CharSequence getPageTitle(int position) {
      return mFragmentTitleList.get(position);
  }

}
style.xml
<resources>

  <style name="MyMaterialTheme" parent="MyMaterialTheme.Base">

  </style>

  <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
      <item name="windowNoTitle">true</item>
      <item name="windowActionBar">false</item>
      <item name="colorPrimary">@color/colorPrimary</item>
      <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
      <item name="colorAccent">@color/colorAccent</item>
  </style>

</resources>
OneFragment.java
public class OneFragment extends Fragment {

  View view;
  ListView listView;
  ArrayList<String> list;
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  }
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState) {
      view = inflater.inflate(R.layout.fragment_one, container, false);
      listView=view.findViewById(R.id.list);
      list=new ArrayList<>();
      list.add("Samsung");
      list.add("iPhone");
      list.add("QMobile");
      list.add("Vada Phone");
      list.add("Mi");
      listView.setAdapter(new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1,list));
      return view;
  }
}
fragment_one.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <ListView
      android:id="@+id/list"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_margin="5dp"
      android:layout_centerInParent="true"/>

</RelativeLayout>
TwoFragment.java
public class TwoFragment extends Fragment{
  View view;
  ListView listView;
  ArrayList<String> list;

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState) {
      view= inflater.inflate(R.layout.fragment_two, container, false);
      listView=view.findViewById(R.id.list);
      list=new ArrayList<>();
      list.add("Samsung Tabs");
      list.add("iPad");
      list.add("Huawei Tabs");
      listView.setAdapter(new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1,list));
      return view;
  }
}
fragment_two.xml
public class TwoFragment extends Fragment{
  View view;
  ListView listView;
  ArrayList<String> list;

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState) {
      view= inflater.inflate(R.layout.fragment_two, container, false);
      listView=view.findViewById(R.id.list);
      list=new ArrayList<>();
      list.add("Samsung Tabs");
      list.add("iPad");
      list.add("Huawei Tabs");
      listView.setAdapter(new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1,list));
      return view;
  }
}
ThreeFragment.java
public class ThreeFragment extends Fragment{
  View view;
  ListView listView;
  ArrayList<String> list;

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState) {
      view= inflater.inflate(R.layout.fragment_three, container, false);
      listView=view.findViewById(R.id.list);
      list=new ArrayList<>();
      list.add("Dell");
      list.add("HP");
      list.add("Lenovo");
      listView.setAdapter(new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1,list));
      return view;
  }
}
fragment_three.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <ListView
      android:id="@+id/list"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_margin="5dp"
      android:layout_centerInParent="true"/>

</RelativeLayout>




Comments