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 List
fragments; 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Fragment 跳转到指定的Fragment 与 Activity跳转到指定的Fragment 的方法
下一篇:Fragment onViewCreated 的作用

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月16日 20时04分20秒