Tablayout 多个界面使用一个fragment 的实例
发布日期:2021-06-30 08:02:16
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月11日 13时19分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
HTTP协议详解
2019-04-30
分布式系统编程,你到哪一级了?
2019-04-30
centos主机名bogon解决办法
2019-04-30
Qt工程文件中QT -= core gui与Config-=qt的区别
2019-04-30
JsonCpp的使用方法
2019-04-30
C++三大函数(The Big Three)
2019-04-30
STL中改变map的默认比较方式
2019-04-30
程序员必读书单 1.0
2019-04-30
DuplicateHandle用法
2019-04-30
linux下QtCreator工程文件中配置Wl,rpath参数
2019-04-30
linux下编译安装nginx1.10.1
2019-04-30
8种常见机器学习算法比较
2019-04-30
第三层交换机和路由器的区别
2019-04-30
RedHat安装GCC问题-解决依赖问题
2019-04-30
mySql查看和修改字符编码
2019-04-30
一文说尽C++赋值运算符重载函数(operator=)
2019-04-30
Windows下编译websocketpp
2019-04-30
MySQL 5.5 InnoDB 锁等待
2019-04-30
VS2013 密钥 – 所有版本
2019-04-30