iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android界面数据懒加载实现代码
  • 678
分享到

Android界面数据懒加载实现代码

数据懒加载Android 2022-06-06 07:06:58 678人浏览 泡泡鱼
摘要

大家在使用手机新闻客户端的时候就会有一个发现,大多数的新闻客户端都会把新闻分类,诸如头条、娱乐、体育、科技等等,如何实现这种界面的呢?这个实现起来其实很简单,就是在一个Frag

大家在使用手机新闻客户端的时候就会有一个发现,大多数的新闻客户端都会把新闻分类,诸如头条、娱乐、体育、科技等等,如何实现这种界面的呢?这个实现起来其实很简单,就是在一个Fragment中实现多个ViewPage的切换,再在ViewPage的上面放一个TabLayout,关联起来就可以实现联动效果。如果大家感觉不太明了的话,以后我可以专门写一篇关于Fragment中放入多个ViewPage的博客,今天,我主要介绍的是怎样实现界面即Fragment的懒加载。那么,大家就会奇怪了既然是加载界面直接加载就好了,为何还要使用懒加载呢?这就需要说一下懒加载的好处了。前文已经介绍过了,大多数新闻客户端实现各种新闻切换的原理是一个Fragment中存放多个ViewPage,如果进入程序之后将所有的ViewPage中的数据都加载上的话,那么无疑会增加APP运行时的负担,而懒加载则可以实现程序启动时fragment中的viewpage只预加载一个界面,等到滑到下一界面时再加载下一个viewpage的数据,并且实现加载界面缓存,下一次再切换到此界面时就不再重新加载了。好了,解释清楚为何要用懒加载,下面就进入今天的正题吧。

第一步:自定义一个fragment让他继承Fragment
1、重写setUserVisibleHint方法
2、定义一个抽象方法lazyInitData()


package com.jereh.jinritoutiao.fragmentdemo.fragment;
import Android.support.v4.app.Fragment;

public abstract class BaseFragment extends Fragment {
protected boolean isVisible = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser){
//加载数据
isVisible = true;
   lazyInitData();
  }else {
isVisible = false;
  }
 }
public abstract void lazyInitData();
}

第二步:再定义一个fragment继承刚才定义的fragment
1、先定义一个全局变量来保存fragment的状态(这一步是为缓存界面准备)定义两个boolean型的变量分别表明fragment的视图控件已经准备好以及当前fragment是否已经加载过数据
2、判断fragment的状态是不是为空,为空时再生成新界面
3、重写父类的lazyInitData()方法实现懒加载



public class NetNewsFragment extends BaseFragment {
  //定义一个全局变量用来保存Fragment的状态
  private View v;
  //listview展示的数据
  private List<NetNews> mData;
  private PullToRefreshListView lv;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String u= getArguments().getString("api");
    if(!TextUtils.isEmpty(u)){
      url = u;
  }
 }
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        if(v==null) {
          //将布局关联起来
          v = inflater.inflate(R.layout.fragment_net_news, container, false);
          //找到ViewPage
          lv = (PullToRefreshListView) v.findViewById(R.id.lv01);
          mData = new ArrayList<>();
          //初始化适配器
          adapter = new NetNewsAdapter(mData, getActivity());
          lv.setAdapter(adapter);
          //界面已经准备完毕
          isPrepared = true;
     (new android.os.Handler()).postDelayed(new Runnable() {
            @Override
            public void run() {
     lazyInitData();
      }
       },200);
       }
        return v;
  }
  
  @Override
  public void lazyInitData() {
    if (isPrepared&&isVisible&&isFirst){
        lv.setRefreshing();
   VolleyUtil.get(url+"?num=20&page="+page)
    .setCallBack(new NetCallBack())
    .build()
    .addRequestHeader("apikey", Constants.API_KEY)
    .start();
    isFirst = false;
  }
 }

这里我为了将懒加载的代码凸显出来,所以PullToListView的样式监听我都省略了,而这里(new android.os.Handler()).postDelayed(new Runnable())中的方法是用多线程的方式实现了异步加载继而达到初始化布局时有时间生成界面组件然后再加载数据。

至此,安卓中实现界面(Fragment)数据懒加载的目的就达到了。大家以后若是想要实现多张界面切换并且数据需要网络请求的话,建议多使用懒加载。

好了,关于懒加载的介绍就说到这里。

您可能感兴趣的文章:详解Jquery lazyload 懒加载angular懒加载机制刷新后无法回退的快速解决方法jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)解析iOS应用的UI开发中懒加载和xib的简单使用方法基于javascript实现图片懒加载基于jquery的图片懒加载jsjQuery自适应轮播图插件Swiper用法示例jQuery简单实现iframe的高度根据页面内容自适应的方法使用jQuery和Bootstrap实现多层、自适应模态窗口懒加载实现的分页&&网站footer自适应


--结束END--

本文标题: Android界面数据懒加载实现代码

本文链接: https://www.lsjlt.com/news/23945.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android fragment懒加载如何实现
    Android Fragment的懒加载可以通过以下步骤实现:1. 在Fragment类中添加一个boolean类型的变量isLoa...
    99+
    2023-08-26
    android fragment
  • Android之Viewpager+Fragment实现懒加载示例
    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用。而ViewPager默认会缓存三页数据,即:Viewpager每加载一个Fragment,都会预先加载此Fragmen...
    99+
    2023-05-31
    viewpager fragment age
  • vue+element tree懒加载更新数据的示例代码
    使用element tree实现懒加载,更新某一节点的数据 1.tree 懒加载 只需要在el-tree标签上面添加lazy,load属性,load的接收是一个函数。这里贴上官网给出...
    99+
    2024-04-02
  • 分析Android 11.0Settings源码之主界面加载
    本篇主要记录AndroidR Settings源码主界面加载流程,方便后续工作调试其流程。 Settings代码路径: packages/app/Settings/ Settings...
    99+
    2024-04-02
  • Android仿苹果关机界面实现代码
    本文实例为大家分享了Android仿苹果关机界面的具体代码,供大家参考,具体内容如下主class 用来控制viewdialog的显示package com.android.server.policy; import android.ap...
    99+
    2023-05-30
    android 关机界面 roi
  • Qt实现边加载数据边显示页面的示例代码
    目录1.定义显示定时器1:定义定时器2:定时器调用3:定时器加载数据2.线程加载数据3.实时呈现加载进度做过C++开发的人们都知道,无论是MFC框架还是QT框架,实现加载数据的等待效...
    99+
    2024-04-02
  • Android实现ListView分页加载数据
    本文实例为大家分享了ListView分页加载数据的具体代码,供大家参考,具体内容如下 FenyeActivity package com.example.myapplicatio...
    99+
    2024-04-02
  • Android仿今日头条多个fragment懒加载的实现
    前言最近有时间,所以我又双叒叕推新一篇文章了,fragment懒加载实现虽然是个小模块,但做过的人都有体会,通常并不会轻易就成功了的,让你辗转反侧,彻夜难眠,绵绵无绝期。我就按照今日头条的样式做了一个懒加载功能。文章到一半会解释大家可能遇到...
    99+
    2023-05-30
  • PHP数组分页中如何实现懒加载?
    php 数组分页时实现懒加载的方法是:使用迭代器只加载数据集的一个元素。创建一个 arraypaginator 对象,指定数组和页面大小。在 foreach 循环中迭代对象,每次加载和处...
    99+
    2024-05-03
    php 懒加载
  • 如何动手用代码实现VB.NET ListView加载数据
    如何动手用代码实现VB.NET ListView加载数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。VB.NET还是比较常用的,于是我研究了一下VB.NET ...
    99+
    2023-06-17
  • Android怎么实现ListView分页加载数据
    本篇内容介绍了“Android怎么实现ListView分页加载数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!FenyeActivityp...
    99+
    2023-06-25
  • vertica数据库copy命令是实现数据加载的代码怎么写
    vertica数据库copy命令是实现数据加载的代码怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。vertica数据加载创建外部数据文本:[dbadmin...
    99+
    2023-06-02
  • vue如何实现路由根据开发状态懒加载
    小编给大家分享一下vue如何实现路由根据开发状态懒加载,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!路由根据开发状态懒加载1 一...
    99+
    2024-04-02
  • vue之el-tree懒加载数据并且实现树的过滤问题
    目录vue el-tree懒加载数据并且实现树的过滤Element el-tree懒加载问题基础使用二次封装数据回显回显问题复选框显隐总结vue el-tree懒加载数据并且实现树的...
    99+
    2023-05-17
    vue el-tree el-tree懒加载数据 el-tree树的过滤
  • Android 使用RecycleView列表实现加载更多的示例代码
    目录1.界面布局2.功能实现 1.界面布局 <?xml version="1.0" encoding="utf-8"?> <FrameLayou...
    99+
    2024-04-02
  • Android 实现ViewPager边界回弹效果实例代码
    废话不多说了,直接给大家贴代码了,具体代码如下所示:public class BounceBackViewPager extends ViewPager { private int currentPosition = 0; private ...
    99+
    2023-05-31
    android viewpager 回弹
  • PyQt5实现界面(页面)跳转的示例代码
    网上关于PyQt5的教程很少,特别是界面跳转这一块儿,自己研究了半天,下来和大家分享一下 一、首先是主界面 # -*- coding: utf-8 -*- # Form im...
    99+
    2024-04-02
  • vue前端页面数据加载添加loading效果的实现
    目录前端页面数据加载添加loading效果具体实现全局loading配置1 再src/componennts/Spinner下面建立一个index.vue2 再utils下面tool...
    99+
    2024-04-02
  • Android实现登陆界面的记住密码功能
    本文实例为大家分享了Android实现登陆界面记住密码功能的具体代码,供大家参考,具体内容如下 所需工具 一、复选框控件:CheckBox,二、SharedPreferences用于...
    99+
    2024-04-02
  • Vue首页界面加载优化实现方法详解
    目录1、路由懒加载2、js 资源异步加载3、图片懒加载4、组件分包懒加载-在视口才加载1、路由懒加载 问题: 项目在打包时会将首页与其他页面的资源打包到同一个资源文件,造成首页加载的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作