Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题
作者:qiaoshi96_bk 发布时间:2023-12-24 20:21:25
标签:android,滑动页面,重复,加载
前言
之前在做一个Viewpager上面加载多个Fragment时总会实例化已经创建好的Fragmnet对象类似
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
switch(position){
case 0:
fragments=new Fragmnet01();
break;
case 1:
fragments=new Fragmnet02();
break;
.....
}
return fragments;
}
@Override
public int getCount() {
return listTabs.size();
}
});
其实仔细想一下,这样是很不合理的,首先你一直实例化对内存是一种浪费另外Viewpager具有预加载性当我们加载某一个Fragmnet时它就会把它的左边和右边都会加载(开头和结尾例外。)所以为了防止重复加载浪费资源,我们可以使用一个对象数组来加载fragment,当每次位置为空的时候我们就可以在该位置上面加载一个布局具体代码
//定义一个对象数组并给定长度
fragments=new MyFragment[listTabs.size()];
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position)
{
//在这里判断如果Fragmnet[position]当前页面没有加载的话我们再次在上面加载
if(fragments[position]==null){
//这里只是写一个构造方法把值传到fragment里面
MyFragment my = MyFragment.getInstance(listTabs.get(position).getId());
fragments[position]=my;
}
return fragments[position];
}
@Override
public int getCount() {
return listTabs.size();
}
});
在fragment里面当然你也可以用bundler来传值。
public static MyFragment getInstance(int id){
MyFragment myFragment=new MyFragment();
Bundle bundle=new Bundle();
bundle.putInt("id",id);
myFragment.setArguments(bundle);
return myFragment;
}
以上所述是小编给大家介绍的Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
来源:http://blog.csdn.net/qiaoshi96_bk/article/details/74858152
0
投稿
猜你喜欢
- 前言Java中容器对象主要用来存储其他对象,根据实现原理不同,主要有3类常用的容器对象:1、ArrayList 使用数组结构存储容器中的元素
- 本文实例讲述了Java使用自定义注解实现为事件源绑定事件 * 操作。分享给大家供大家参考,具体如下:一 定义注解import java.la
- 一、问题分析及解决方案1、问题分析上一章我们讲过远程仓储统一管理配置信息,客户端可以通过统一配置服务中心 config server 服务端
- 前言前面介绍了APP顶部导航栏AppBar,今天来介绍下Flutter实现APP底部导航栏。我们以仿写微信的底部导航栏来举例说明。要实现类似
- 本文实例讲述了Java对XML文件增删改查操作。分享给大家供大家参考,具体如下:xml文件:<?xml version="1
- java 可变参数详解 可变参数(Varargs)使程序员可以声明一个接受可变数目参数的方法。可变参数也
- # 前言在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信
- 前言关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。Fina
- Java内部类一、 含义在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。二、
- Spring Boot中可以在配置文件中直接进行数据库配置,spring.datasource.username= rootspring.d
- 1. 绪论当我们编写了自己的C#程序,有程序自定义的文件类型时,通常希望它满足以下需求:双击自定义文件打开自定义程序 自定义文件有着自己的图
- 本文将介绍使用Spring Boot集成Mybatis并实现主从库分离的实现(同样适用于多数据源)。延续之前的Spring Boot 集成M
- 本文实例为大家分享了JavaWeb实现用户登录与注册的具体代码,供大家参考,具体内容如下所用知识客户端:HTML CSS JS (JQuer
- Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的
- eclipse的代码提交到git,下载后用新的ide工具IJ 进行开发一、导入项目eclipse里有workSpace 但是在IDEA中没有
- fifter、servlet、interceptorfifter用来处理请求头、请求参数、编码的一些设置,然后转交给servlet,处理业务
- Excel表格中,由于各种数据的复杂性,可能存在单元格中的数据字号大小、数据内容长度不一而出现,列宽过宽、过窄或者行高过大、过小的问题。常见
- 抽象类(abstract):抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有
- 闲来无事,用C++做了一个图书管理系统,主要有借书、还书、图书管理、用户管理等功能,主要用到的技术有容器和文件,以及类的封装#include
- java 遍历listpackage com.tiandy.core.rest;import java.util.ArrayList;imp