Tablayout 多个界面使用一个fragment 的实例
发布日期:2021-06-30 08:02:16
浏览次数:4
分类:技术文章
本文共 2982 字,大约阅读时间需要 9 分钟。
这个主要还是adapter 里面 添加list 就行了
这里直接上代码吧 ,我刚写的demo 看的时候看adapter 就行了
布局代码:
tablayout + viewpager
public class DetailsActivity extends AppCompatActivity { private TabLayout tabLayout; private ViewPager viewPager; private Listfragments; private List titles; private mPagerAdapter adapter; String[] str = {"大海", "蓝天", "白云"}; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.details_activity_layout); fragments = new ArrayList<>(); titles = new ArrayList<>(); tabLayout = findViewById(R.id.detail_food_tablayout); viewPager = findViewById(R.id.detail_food_viewpager); for (int i = 0; i < str.length; i++) { titles.add(str[i]); fragments.add(DetailsFragment.newInstance(i)); } adapter = new mPagerAdapter(getSupportFragmentManager(), titles, fragments); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); } private class mPagerAdapter extends FragmentPagerAdapter { private List mFragmentList; private List mTitles; public mPagerAdapter(FragmentManager fm, List titles, List fragList) { super(fm); mTitles = titles; mFragmentList = fragList; } @Override public Fragment getItem(int position) { return mFragmentList.size() != 0 ? mFragmentList.get(position) : null; } @Override public int getCount() { return mFragmentList == null ? 0 : mFragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return mTitles.size() != 0 ? mTitles.get(position) : ""; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { } }}
fragment 代码
public class DetailsFragment extends Fragment { private int index; public static DetailsFragment newInstance(int index) { DetailsFragment df = new DetailsFragment(); Bundle bundle = new Bundle(); bundle.putInt("index", index); df.setArguments(bundle); return df; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { index = getArguments().getInt("index"); Log.e("-------index", String.valueOf(index)); } } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.details_fragment_layout, container, false); return view; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); }}
Fragment 里面请求服务器加载数据即可。。。。
注意事项 ,由于viewPager 缓存问题第一次进来的还把第二个界面的数据也会加载了,这个问题可以使用Fragment的
懒加载来处理。。。。
转载地址:https://huxiaomu.blog.csdn.net/article/details/100188551 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月16日 20时04分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java并发以及多线程基础
2021-07-03
软件质量的8个特性
2021-07-03
应届渣渣前端的艰难求职之路
2021-07-03
2021年不可错过的17种JS优化技巧(一)
2021-07-03
2021年不可错过的17种JS优化技巧(二)
2021-07-03
月薪15~20k的前端面试问什么?
2021-07-03
一文学会使用Vue3
2021-07-03
我是如何看Vue源码的
2021-07-03
在 Vue 中用 Axios 异步请求API
2021-07-03
为什么总是面试造火箭呢?做前端真的有这么难么?
2021-07-03
85道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
2021-07-03
如何安装以及使用vsftpd服务
2021-07-03
Linux之磁盘与分区的管理(快速入门)
2021-07-03
LVM逻辑卷------基础命令详解(三分钟入门)
2021-07-03
LVM逻辑卷------详细操作过程(三分钟上手)
2021-07-03
mysql——介绍及安装与基本用法
2021-07-03
MySQL数据库之索引
2021-07-03
MYSQL——事务操作+视图+存储引擎
2021-07-03
Mysql——完全备份+增量备份+备份恢复
2021-07-03
MySQL进阶查询(SELECT 语句高级用法)
2021-07-03