如何从数据库在ViewPager片段中动态加载数据



我的目标是创建具有滑动手势以在产品之间切换的应用程序。首先,我创建带有导航抽屉的应用程序。此抽屉项目/菜单将加载不同的片段。

在这个名为 Coupon 的特定片段中,我想实现 ViewPager。 这是我在尝试中取得的成就:

  1. 创建优惠券片段,当我单击导航抽屉中的项目之一时加载

  2. 在优惠券碎片上.java我把:

    mCustomPagerAdapter = new CustomPagerAdapter(getFragmentManager(), getActivity());
    mViewPager = (ViewPager) view.findViewById(R.id.pager);
    mViewPager.setAdapter(mCustomPagerAdapter);
    
  3. 在我放视图页的fragment_coupon.xml

  4. 我创建了扩展 FragmentPagerAdapter 的 CustomPagerAdapter:

    public class CustomPagerAdapter extensions 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;
    }
    

    }

  5. 我创建了DemoFragment.java它加载在适配器中:

    公共类 DemoFragment 扩展了 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;
    }
    

    }

  6. 我创建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"/>
    

我的问题:

  1. 我想在那里加载一堆产品,假设有 20 个产品要滑动。 我该怎么做? 我只得到了位置,但没有加载数据的产品 ID

一次从数据库中获取所有 20 个产品,并在 CustomPagerAdapter(List list,...)中传递一个列表;并在 getCount() 中返回 list.size

最新更新