Android tabLayout中tab的更新

1、自定义adapter

public class NoteStarAdapter extends FragmentPagerAdapter {

    private Context context;
    private List<Fragment> fragmentList;
    private List<String> list_Title,id;
    private Fragment[] f;

    public NoteStarAdapter(FragmentManager fm, Context context, List<Fragment> fragmentList, List<String> list_Title,List<String> list_Title_id) {
        super(fm);
        this.context = context;
        this.fragmentList = fragmentList;
        this.list_Title = list_Title;
        this.id =list_Title_id;
        //notifyDataSetChanged();
    }

    @Override
    public Fragment getItem(int position) {
        return getfragment(position);
        //fragmentList.get(position)
    }


    public void add(List<String> list_Title1,List<String> list_Title_id1){
        list_Title.addAll(list_Title1);
        id.addAll(list_Title_id1);
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return list_Title.size();
    }

    /**
     * //此方法用来显示tab上的名字
     *
     * @param position
     * @return
     */
    @Override
    public CharSequence getPageTitle(int position) {
        return list_Title.get(position);
    }

    //动态创建Fragment的方法
    public Fragment getfragment(int position){
        f = new Fragment[list_Title.size()];
        Fragment fg = f[position];
        if (fg == null) {
            fg = FileGroundFragment.getiniturl(list_Title.get(position),id.get(position),position,list_Title.size());
            f[position] = fg;
        }
        return fg;
    }
}

2、在filegroundFragment中定义一个新函数

public static FileGroundFragment getiniturl(String tag,String id,int i,int total) {
        FileGroundFragment fileGroundFragment = new FileGroundFragment();
        Bundle bundle = new Bundle();
        bundle.putInt("_position", i);
        bundle.putInt("_total_position", total);
        bundle.putString("_id", id);
        fileGroundFragment.setArguments(bundle);
        return fileGroundFragment;
    }

3、在oncreate中使用

Bundle args = getArguments();
        i = args.getInt("_position");//这个i不是现在的位置
        total = args.getInt("_total_position");
        if (i+1==total){
            EventBus.getDefault().post(new MessageEvent("LoadMore"));
            Log.e("sure","send");
        }

4、在寄主Activity或Fragment中使用

public void initView(View view) {
        viewPager = view.findViewById(R.id.viewpager);
        mTabLayout = view.findViewById(R.id.tablayout);
        fragmentList = new ArrayList<>();
        list_Title = new ArrayList<>();
        id = new ArrayList<>();
        fragmentList.add(new FileGroundFragment());
        list_Title.add("默认");
        id.add("0");
        toolbarTitle = getActivity().getResources().getString(R.string.tab_2);
        Log.e("title",toolbarTitle);
        toolbar = view.findViewById(R.id.toolbar);
        if (toolbar != null) {
            if (toolbarTitle != null) {
                toolbar.setTitle(toolbarTitle);
            }
        }
        setHasOptionsMenu(true);//加上这句话,menu才会显示出来
        toolbar.inflateMenu(R.menu.filelist_fragment_menu);
    }

 //获得数据
    private void getData() {
        j = true;
        BmobQuery<Tag> query = new BmobQuery<>();
        // 按时间降序查询
        query.order("troops");
        //设置最多每次只查询10个
        query.setLimit(10);
        query.findObjects(new FindListener<Tag>() {
            @Override
            public void done(final List<Tag> list, BmobException e) {
                if (e == null) {
                    if (list.size() > 0) {
                        //如果有数据,则加载数据
                        for (int i = 0; i<list.size(); i++){
                            list_Title.add(list.get(i).getTexttag());
                            id.add(list.get(i).getObjectId());
                        }
                        mTabLayout.setupWithViewPager(viewPager);
                      mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
                        noteStarAdapter = new NoteStarAdapter(getChildFragmentManager(),getActivity(),fragmentList,list_Title,id);
                        viewPager.setAdapter(noteStarAdapter);
                        viewPager.setOffscreenPageLimit(5);
                    }else{
                        ShowToast(getString(R.string.None_message));
                    }

                }else{
                    ShowToast(getString(R.string.Check_net));
                }
            }});

    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容