首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在viewpager上获取所选选项卡的位置

无法在viewpager上获取所选选项卡的位置
EN

Stack Overflow用户
提问于 2016-11-18 16:40:17
回答 1查看 414关注 0票数 1

将创建多少选项卡取决于web服务。这意味着在调用web服务之前,我无法发现要创建多少个Tabs。标签包含我想要在网格视图中显示的产品。

在我的项目中,我有创建选项卡的ShopProductsPageFragments.java。请看下面的代码:

代码语言:javascript
复制
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    CatPosition = getArguments().getInt("CatPosition");
    StoreID = getArguments().getString("StoreID");
    System.out.println("getStoreID in ShopProductsPageFragments="+ StoreID);
    System.out.println("getCatPosition in ShopProductsPageFragments="+ CatPosition);

    try {
        ShopCategoryData = (GetProductCategoriesByStoreResponsePojo) getArguments().getSerializable("ShopCatNames");
    }catch (Exception e){
        e.printStackTrace();
    }
    assert ShopCategoryData != null;
    List<Datum> shopcatdata = ShopCategoryData.getData();
    for (int i = 0; i < shopcatdata.size(); i++) {
        System.out.println("ShopCategoryData in ShopProductsPageFragments "+ shopcatdata.get(i).getCatName());
    }
    ShopProductsPageView = inflater.inflate(R.layout.activity_product_page_fragment ,container ,false);
    viewPager = (ViewPager)ShopProductsPageView.findViewById(R.id.product_viewpager);
    setupViewPager(viewPager);
    tabLayout = (TabLayout)ShopProductsPageView.findViewById(R.id.product_tabs);
    tabLayout.setupWithViewPager(viewPager);
    return ShopProductsPageView;
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
    List<Datum> shopcatdata = ShopCategoryData.getData();
    for (int i = 0; i < shopcatdata.size(); i++) {
        CommanShopProductFragment commanShopProductFragment = CommanShopProductFragment.newInstance(i);
        String CatName = shopcatdata.get(i).getCatName();
        Bundle bundle = new Bundle();
        bundle.putString("StoreID",StoreID);
        bundle.putString("CatName",CatName);
        commanShopProductFragment.setArguments(bundle);
        System.out.println("ShopCategoryData in ShopProductsPageFragments "+ shopcatdata.get(i).getCatName());
        adapter.addFrag(commanShopProductFragment, shopcatdata.get(i).getCatName());
    }
    adapter.notifyDataSetChanged();
    viewPager.setAdapter(adapter);
    viewPager.setCurrentItem(CatPosition);
}

class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    FragmentManager fragmentManager;
    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
        fragmentManager = manager;
    }

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

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

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

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

}

在这里,您可以看到选项卡是如何创建的。我使用相同的片段在Tabs中显示数据,如下所示:

代码语言:javascript
复制
    public class CommanShopProductFragment extends Fragment {
private static final String ARG_POSITION = "position";
private int position;
View CategoryTabFragmentView;
GetStoreProductsByCategoriesPresenterImpl presenter;
RestClient service;
GridView gridView;
List<Datum> shopProduct;
ProductByCategoryGridViewAdapter mAdapter;
public CommanShopProductFragment() {
    // Required empty public constructor
}
public static CommanShopProductFragment newInstance(int position) {
    CommanShopProductFragment f = new CommanShopProductFragment();
    Bundle b = new Bundle();
    b.putInt(ARG_POSITION, position);
    f.setArguments(b);
    return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String CatName = getArguments().getString("CatName");
    String StoreID = getArguments().getString("StoreID");
    assert CatName != null;
    System.out.println("CommanShopProductFragment >>>>>>>> CatName="+CatName);
    assert StoreID != null;
    System.out.println("CommanShopProductFragment >>>>>>>> StoreID="+StoreID);
    CategoryTabFragmentView = inflater.inflate(R.layout.activity_category_tab_fragment ,container ,false);
    service = ((LilubiApplication) getActivity().getApplication()).getNetworkService();
    presenter = new GetStoreProductsByCategoriesPresenterImpl(this, service);
    String page = "1", itemsPerPage = "10";
    try {
        presenter.GetStoreProductsByCategories(CatName, StoreID, page, itemsPerPage);
    }catch (Exception e){
        e.printStackTrace();
    }
    return CategoryTabFragmentView;
}
public void getStoreProductsByCategories(ProductByCategoriesResponsePojo productByCategoriesResponsePojo){
    System.out.println("CategoryTabFragment in  getMessage="+productByCategoriesResponsePojo.getMessage());
    System.out.println("CategoryTabFragment in  getStatus="+productByCategoriesResponsePojo.getStatus());
    // prepared arraylist and passed it to the Adapter class
    shopProduct = productByCategoriesResponsePojo.getData();
    mAdapter = new ProductByCategoryGridViewAdapter(getActivity(),shopProduct);
    // Set custom adapter to gridview
    gridView = (GridView) CategoryTabFragmentView.findViewById(R.id.category_tab_view_grid_view);
    gridView.setAdapter(mAdapter);
}

现在我想要的是,当用户选择一个标签,然后产品列表应该显示根据标签中选定的类别。所有的产品数据也都来自web服务。如果我遗漏了什么要解释的,请告诉我。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-11-18 16:44:44

我正在编辑我之前的答案

编辑:您可以使用viewpager.getCurrentItem()获取当前位置//使用viewpager将其包含在您的活动中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40672626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档