android – 刷新SlidingTabLayout

android – 刷新SlidingTabLayout,第1张

概述图片中的示例: >清空PagerView >具有新内容的PagerView(SlidingTabLayout不更新) >新的视图实例(SlidingTabLayout已更新); 这是我的代码: public class CharSortFragment extends Fragment { private final String TAG = "CharSortFragment"; 图片中的示例:

>清空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所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1122345.html

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

发表评论

登录后才能评论

评论列表(0条)

保存