Android仿今日头条多个fragment懒加载的实现
短信预约 -IT技能 免费直播动态提醒
前言
最近有时间,所以我又双叒叕推新一篇文章了,fragment懒加载实现虽然是个小模块,但做过的人都有体会,通常并不会轻易就成功了的,让你辗转反侧,彻夜难眠,绵绵无绝期。我就按照今日头条的样式做了一个懒加载功能。文章到一半会解释大家可能遇到的不加载数据了的坑,先不剧透。
Fragment的生命周期回顾
github代码直通车 (本地下载)
这里是今日头条效果:
自制效果,有图有真相:
实现思路:
使用Fragment类自带方法setUserVisibleHint()判断当前fragment是否对用户可见,根据回调的isVisibleToUser参数来进行相关的逻辑判断。重写该方法,创建变量isVisible拿到是否可见标志。
但是直接根据isVisible判断就加载数据,可能onCreateView()方法并未执行完毕,此时就会出现NullPointerException空指针异常。所以就需要满足控件初始化完成,用户可见,才能加载数据。
LazyloadFragment懒加载fragment实现:
public abstract class LazyloadFragment extends Fragment { protected View rootView; private boolean isInitView = false; private boolean isVisible = false; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(setContentView(), container, false); init(); isInitView = true; isCanLoadData(); return rootView; } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见,获取该标志记录下来 if(isVisibleToUser){ isVisible = true; isCanLoadData(); }else{ isVisible = false; } } private void isCanLoadData(){ //所以条件是view初始化完成并且对用户可见 if(isInitView && isVisible ){ lazyLoad(); //防止重复加载数据 isInitView = false; isVisible = false; } } protected abstract int setContentView(); protected abstract void init(); protected abstract void lazyLoad();}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Android仿今日头条多个fragment懒加载的实现
下载Word文档到电脑,方便收藏和打印~
下载Word文档
相关文章
- 如何使用 JavaScript 的 json.stringify()?(JavaScript的json.stringify()怎么使用)
- Java 中 indexOf 函数有哪些使用限制呢?(Java的indexof函数有哪些使用限制)
- 揭秘Ruby代码安全:常见问题与解决方案
- 如何理解 JavaScript 事件循环处理错误的机制?(JavaScript 事件循环怎样处理错误)
- 提高Ruby加密解密效率的技巧
- Java中HashMap的扩容机制究竟是怎样的?(Java中HashMap的扩容机制是什么 )
- Java NetBeans 的社区资源都有哪些呀?(java netbeans的社区资源有哪些)
- 提升Ruby代码安全性的培训技巧
- 如何解决 JAVA 中的 StackOverflowError 错误?(JAVA中StackOverflowError错误的解决)
- 如何在 Java 中妥善处理 utf 字符串?(如何在java中处理utf字符串)
猜你喜欢
Android仿今日头条多个fragment懒加载的实现
前言最近有时间,所以我又双叒叕推新一篇文章了,fragment懒加载实现虽然是个小模块,但做过的人都有体会,通常并不会轻易就成功了的,让你辗转反侧,彻夜难眠,绵绵无绝期。我就按照今日头条的样式做了一个懒加载功能。文章到一半会解释大家可能遇到
2023-05-30
Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中
我这里只是简单的用了两个listview来实现的,先上效果图。比较粗糙。预留了自定义的空间。思路:从上图应该可以看的出来。就是上下两个listview。点击下面的ltem。会动态的移动到上一个listview的最后。上面的listview
2022-06-06