>清空PagerVIEw
>具有新内容的PagerVIEw(SlIDingTabLayout不更新)
>新的视图实例(SlIDingTabLayout已更新);
这是我的代码:
public class CharSortFragment extends Fragment { private final String TAG = "CharSortFragment"; private VIEwPager vIEwPager; private TabsPagerAdapter tabsAdapter; private SlIDingTabLayout slIDingTabLayout; private FragmentActivity activity; public CharSortFragment() {} @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) { Log.d(TAG,"OnCreate vIEw..."); final VIEw vIEw = inflater.inflate(R.layout.char_sort_fragment,container,false); activity = getActivity(); Log.d(TAG,"Init add button..."); floatingActionbutton addbutton = (floatingActionbutton) vIEw.findVIEwByID(R.ID.add_button); addbutton.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Log.d(TAG,"Add button was clicked..."); startActivityForResult(new Intent(getActivity(),Editactivity.class),1); } }); vIEwPager = (VIEwPager) vIEw.findVIEwByID(R.ID.pager); tabsAdapter = new TabsPagerAdapter(activity.getSupportFragmentManager()); vIEwPager.setAdapter(tabsAdapter); Log.d(TAG,"Connecting PagerSlIDingTabStrip..."); slIDingTabLayout = (SlIDingTabLayout) vIEw.findVIEwByID(R.ID.tabs); slIDingTabLayout.setVIEwPager(vIEwPager); Log.d(TAG,"OnCreate finished!"); return vIEw; } @OverrIDe public voID onActivityResult(int requestCode,int resultCode,Intent data) { Log.d(TAG,"On activity result: " + resultCode); if(resultCode == 1) { Log.d(TAG,"Notify data changes..."); tabsAdapter.updateCharSet(); tabsAdapter.notifyDataSetChanged(); slIDingTabLayout.invalIDate(); CardListFragment cardListFragment = tabsAdapter.currentFragment; /* Обновляем TabsAdapter всегда,ибо я ленивая жопа if(tabsAdapter.currentFragment == null) { tabsAdapter.updateCharSet(); tabsAdapter.notifyDataSetChanged(); cardListFragment = tabsAdapter.currentFragment; } */ RecyclerVIEwAdapter recyclerVIEwAdapter = cardListFragment.getAdapter(); recyclerVIEwAdapter.updateDataSet(); recyclerVIEwAdapter.notifyDataSetChanged(); Log.d(TAG,"VIEws was notifIEd!"); } } public class TabsPagerAdapter extends FragmentPagerAdapter { private final String TAG = "TabsPagerAdapter"; private final HashSet<TongueTwister> data = TongueTwisteRSStorageManager.getInstance().getData(); private final ArrayList<Character> characters = new ArrayList<>(); private CardListFragment currentFragment; public TabsPagerAdapter(FragmentManager fm) { super(fm); Log.i(TAG,"Creating TabsPagerAdapter..."); updateCharSet(); } @OverrIDe public Fragment getItem(int position) { char charatCurrentPos = characters.get(position); return CardListFragment.newInstance(charatCurrentPos); } protected voID updateCharSet() { this.characters.clear(); this.characters.addAll(generateCharList()); } private ArrayList<Character> generateCharList() { Log.i(TAG,"Generating char List..."); Log.i(TAG,"Total tongue twisters: " + data.size()); HashSet<Character> hashCharacters = new HashSet<>(); for (TongueTwister tongueTwister : data) { for(char character : tongueTwister.getCharacters()) { if(!hashCharacters.contains(character)) { Log.i(TAG,"Char: " + character); hashCharacters.add(character); } } } Log.i(TAG,"Sorting..."); ArrayList<Character> characters = new ArrayList<>(hashCharacters); Collections.sort(characters); Log.i(TAG,"Char List was generated!"); return characters; } @OverrIDe public int getCount() { return characters.size(); } @OverrIDe public CharSequence getPageTitle(int position) { return String.valueOf(characters.get(position)); } @OverrIDe public voID setPrimaryItem(VIEwGroup container,int position,Object object) { currentFragment = (CardListFragment) object; } }}
我该如何刷新SlIDingTabLayout? (slIDingTabLayout.invalIDate()对我不起作用)
解决方法@H_404_32@ 找到了解决方案!只需在更新其适配器后设置VIEwPager:
tabsAdapter.updateCharSet(); // Updating FragmentPagerAdapter tabsAdapter.notifyDataSetChanged(); slIDingTabLayout.setVIEwPager(vIEwPager); // Updating SlIDingTabStrip总结
以上是内存溢出为你收集整理的android – 刷新SlidingTabLayout全部内容,希望文章能够帮你解决android – 刷新SlidingTabLayout所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)