android–ViewPager,与RecyclerView相同的Fragment用于多个选项卡

android–ViewPager,与RecyclerView相同的Fragment用于多个选项卡,第1张

概述我正在开发一个具有类别列表的应用程序.如果我们点击类别,那么我必须在选项卡中显示不同的子类别,每个选项卡都有一个产品列表.一切工作正常,标签和片段都加载了正确的数据,只有recyclerviewonClick提供了不正确的项目(来自相邻片段的recyclerview的项目).主要发生在viewpagers

我正在开发一个具有类别列表的应用程序.
如果我们点击类别,那么我必须在选项卡中显示不同的子类别,每个选项卡都有一个产品列表.

一切工作正常,标签和片段都加载了正确的数据,只有recyclervIEw onClick提供了不正确的项目(来自相邻片段的recyclervIEw的项目).主要发生在vIEwpager swipe上.

活动代码:

    PagerAdapter adapter = new PagerAdapter            (getSupportFragmentManager(), tabLayout.getTabCount(), response);     // response is a List of subcategorIEs and products     vIEwPager.setoffscreenPagelimit(1);    vIEwPager.setAdapter(adapter);    vIEwPager.addOnPagechangelistener(new TabLayout.TabLayoutOnPagechangelistener(tabLayout));    tabLayout.setonTabSelectedListener(new TabLayout.OnTabSelectedListener() {        @OverrIDe        public voID onTabSelected(TabLayout.Tab tab) {            vIEwPager.setCurrentItem(tab.getposition());        }        @OverrIDe        public voID onTabUnselected(TabLayout.Tab tab) {        }        @OverrIDe        public voID onTabReselected(TabLayout.Tab tab) {        }    });

PagerAdapter中的代码:

public class PagerAdapter extends FragmentStatePagerAdapter {int mNumOfTabs;SubcategoryResponse response;public PagerAdapter(FragmentManager fm, int NumOfTabs, SubcategoryResponse response) {    super(fm);    this.mNumOfTabs = NumOfTabs;    this.response = response;}@OverrIDepublic Fragment getItem(int position) {    L.m(position +" => "+response.getList().get(position).getProducts().get(0).getname());    TabFragment fragmentDummy = TabFragment.getInstance(position, response.getList().get(position).getProducts());    return fragmentDummy;}@OverrIDepublic int getCount() {    return mNumOfTabs;}

}

TabFragment中的代码:

public class TabFragment extends Fragment implements ProductAdapter.mClickListener {@Bind(R.ID.List_container_fragment)linearLayout ListContainerFragment;@Bind(R.ID.List_products)RecyclerVIEw productListVIEw;private ProductAdapter productsAdapter;private Dialog myDialog;private linearlayoutmanager linearlayoutmanager;private ArrayList<Products> responseProducts = null;public TabFragment() {    // required empty public constructor}public static TabFragment getInstance(int position, ArrayList<Products> response) {    TabFragment fragmentDummy = new TabFragment();    Bundle args = new Bundle();    args.putParcelableArrayList("PRODUCTS", response);    args.putInt("position", position);    fragmentDummy.setArguments(args);    return fragmentDummy;}@OverrIDepublic voID setArguments(Bundle args) {    super.setArguments(args);    this.responseProducts = args.getParcelableArrayList("PRODUCTS");}@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);}@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                         Bundle savedInstanceState) {    // Inflate the layout for this fragment    VIEw vIEw = inflater.inflate(R.layout.fragment_tab, container, false);    ButterKnife.bind(this, vIEw);    linearlayoutmanager = new linearlayoutmanager(getActivity());    linearlayoutmanager.setorIEntation(linearlayoutmanager.VERTICAL);    productListVIEw.setLayoutManager(linearlayoutmanager);    productListVIEw.setItemAnimator(new DefaultItemAnimator());    populateList();    return vIEw;}public voID populateList() {    L.m("populate List");    if (responseProducts.size() > 0) {        L.m("InsIDe populate List => " + responseProducts.get(0).getname());        productsAdapter = new ProductAdapter(responseProducts);        productsAdapter.setListner(getActivity(), this);        productListVIEw.setAdapter(productsAdapter);        productListVIEw.setHasFixedSize(true);    } else {        showError("No Products to Show");    }}public voID showError(String msg) {    SnackbarManager.show(            Snackbar.with(getActivity()) // context                    .text(msg) // text to be displayed                    .textcolor(color.WHITE) // change the text color                            // .textTypeface(myTypeface) // change the text Font                    .color(getResources().getcolor(R.color.colorPrimary)) // change the background color                    .duration(Snackbar.SnackbarDuration.LENGTH_LONG)            , getActivity());}@OverrIDepublic voID mClickDetails(VIEw vIEw, int pos) {    startActivity(new Intent(getActivity(), ProductDetailsActivity.class)            .putExtra("PRODUCT", responseProducts.get(pos).getname()));}@OverrIDepublic voID onResume() {    // Todo auto-generated method stub    super.onResume();    //populateList();}}

我不知道这里出了什么问题.

请帮忙,谢谢.

解决方法:

很好地解决了这个问题

从RecyclerVIEw适配器中删除了静态字段.

现在工作正常.

总结

以上是内存溢出为你收集整理的android – ViewPager,与RecyclerView相同的Fragment用于多个选项卡全部内容,希望文章能够帮你解决android – ViewPager,与RecyclerView相同的Fragment用于多个选项卡所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1113567.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存