FragmentPagerAdapter无法刷新数据问题

xiaoxiao2021-02-28  46

private class TagPagerAdapter extends FragmentPagerAdapter { private FragmentManager fragmentManager; private List<String> tags; private Fragment[] fragments; public TagPagerAdapter(FragmentManager fm) { super(fm); this.fragmentManager = fm; this.fragments = fragments; this.tags = new ArrayList<>(); } @Override public int getCount() { return types.size(); } @Override public Fragment getItem(int position) { return fragments[position]; } @Override public Object instantiateItem(ViewGroup container, int position) { tags.add(makeFragmentName(container.getId(), getItemId(position))); Fragment fragment = (Fragment) super.instantiateItem(container, position); this.fragmentManager.beginTransaction().show(fragment).commit(); return fragment; } public void setNewFragments(Fragment[] fragments) { if (this.tags != null) { FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); for (int i = 0; i < tags.size(); i++) { fragmentTransaction.remove(fragmentManager.findFragmentByTag(tags.get(i))); } fragmentTransaction.commit(); fragmentManager.executePendingTransactions(); tags.clear(); } this.fragments = fragments; notifyDataSetChanged(); } @Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = fragments[position]; fragmentManager.beginTransaction().hide(fragment).commit(); } @Override public CharSequence getPageTitle(int position) { return types.get(position).name; } @Override public int getItemPosition(Object object) { return POSITION_NONE; } private String makeFragmentName(int viewId, long id) { return "android:switcher:" + viewId + ":" + id; } }

adapter如上,刷新时用

setNewFragments(fragments)

转载请注明原文地址: https://www.6miu.com/read-2613773.html

最新回复(0)