I have an Android app that shows some fragments, but I'm repeating lots of code.
MainActivity.java
public class MainActivity extends FragmentActivity {
MyPagerAdapter pageAdapter;
ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pageAdapter = new MyPagerAdapter(getSupportFragmentManager());
pager = (ViewPager)findViewById(R.id.myViewPager);
pager.setAdapter(pageAdapter);
}
public void homeButtonPressed(View v) {
// go home
pager.setCurrentItem(0);
}
}
MyPagerAdapter.java
public class MyPagerAdapter extends FragmentPagerAdapter {
public List<Fragment> fragments;
public MyPagerAdapter(FragmentManager fm) {
super(fm);
this.fragments = new ArrayList<Fragment>();
fragments.add(new Page1());
fragments.add(new Page2());
fragments.add(new Page3());
fragments.add(new Page4());
fragments.add(new Page5());
fragments.add(new Page6());
fragments.add(new Page7());
fragments.add(new Page8());
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
I'm loading in the page adapter the fragments to show, but they are all the same with a few differences.
Layout for page 1
<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"
android:background="#F7F4E7">
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/page_1" />
</RelativeLayout>
Page1.java
public class Page1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.page1_layout, container, false);
return view;
}
}
The only difference on each page is the
android:src="@drawable/page_1"
and showing a button or hiding it for certain fragments.
I come from Objective-C, and I understand that I need to abstract this, as I have created all of this classes PageN, that are the same! ,but I don't yet understand how to load them on the pagerAdapter .