
我正在开发一个具有类别列表的应用程序.
如果我们点击类别,那么我必须在选项卡中显示不同的子类别,每个选项卡都有一个产品列表.
一切工作正常,标签和片段都加载了正确的数据,只有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用于多个选项卡所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)