Reputation: 229
I'm aiming to create app that having swipe gesture to switch between products. At first, i create app with navigation drawer. this drawer item/menu will load different fragment.
in this particular fragment, named coupon, i want to implement the viewpager. this is what i achieve on my try:
create coupon fragment which loaded when i click one of item in navigation drawer
on CouponFragment.java i put:
mCustomPagerAdapter = new CustomPagerAdapter(getFragmentManager(), getActivity());
mViewPager = (ViewPager) view.findViewById(R.id.pager);
mViewPager.setAdapter(mCustomPagerAdapter);
on fragment_coupon.xml i put the ViewPager
I Create CustomPagerAdapter that extends FragmentPagerAdapter:
public class CustomPagerAdapter extends FragmentPagerAdapter {
protected Context mContext;
public CustomPagerAdapter(FragmentManager fm, Context context) {
super(fm);
mContext = context;
}
@Override
// This method returns the fragment associated with
// the specified position.
//
// It is called when the Adapter needs a fragment
// and it does not exists.
public Fragment getItem(int position) {
// Create fragment object
Fragment fragment = new DemoFragment();
// Attach some data to it that we'll
// use to populate our fragment layouts
Bundle args = new Bundle();
args.putInt("page_position", position + 1);
args.putString("coupon_name", "Promo Lorem Ipsum");
args.putString("coupon_desc", "description is here");
// Set the arguments on the fragment
// that will be fetched in DemoFragment@onCreateView
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 3;
}
}
I create DemoFragment.java which loaded inside adapter:
public class DemoFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout resource that'll be returned
View rootView = inflater.inflate(R.layout.fragment_demo, container, false);
// Get the arguments that was supplied when
// the fragment was instantiated in the
// CustomPagerAdapter
Bundle args = getArguments();
((TextView) rootView.findViewById(R.id.text)).setText("Page " + args.getInt("page_position"));
((TextView) rootView.findViewById(R.id.test1)).setText("" + args.getString("coupon_name"));
((TextView) rootView.findViewById(R.id.test2)).setText("" + args.getString("coupon_desc"));
return rootView;
}
}
I create fragment_demo.xml:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Page 0"
android:id="@+id/text" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/test1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/test2"/>
my question:
Upvotes: 0
Views: 1131
Reputation: 384
Get all the 20 product once form the database and pass a list inside CustomPagerAdapter(List list,...); and in getCount() return list.size
Upvotes: 1