如何在数据库中加载ViewPager片段内的数据dinnamicaly

时间:2017-05-16 08:18:13

标签: android android-fragments

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

在这个名为优惠券的特定片段中,我想实现viewpager。这就是我在尝试时取得的成就:

  1. 创建优惠券片段,当我点击导航栏中的项目

  2. 时加载
  3. 在CouponFragment.java上我放了:

    mCustomPagerAdapter = new CustomPagerAdapter(getFragmentManager(), getActivity());
    
    mViewPager = (ViewPager) view.findViewById(R.id.pager);
    mViewPager.setAdapter(mCustomPagerAdapter);
    
  4. 在fragment_coupon.xml上的
  5. 我把ViewPager

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

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

    }

  7. 我创建了在适配器中加载的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;
    }
    

    }

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

  9. 我的问题:

    1. 我想在那里加载一堆产品,比方说要刷20个产品。我怎样才能做到这一点?我只获得了位置,但没有加载数据的产品ID

1 个答案:

答案 0 :(得分:1)

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