android音乐播放器音乐加载,Android开源音乐播放器之在线音乐列表自动加载更多...

系列文章

前言

当咱们的ListView数据比较多时,咱们通常都会选择分页显示,而分页显示就须要一个动做触发加载更多操做,一般咱们会使用上拉加载更多,但我以为不够人性化,由于用户须要手动上拉,因此更加人性化的方案应该是列表滚动到底部自动加载更多。咱们以在线音乐列表为例,因为不须要刷新,所以这里咱们不讨论刷新功能。java

思路分析

触发自动加载后,须要在ListView底部显示一个进度条,表示正在加载。咱们最容易想到的办法就是给ListView添加FooterView,这也是最直接的办法。但ListView的addFooterView方法有一个限制,必须在setAdapter以前调用,而咱们显示正在加载进度条前,确定要先给ListView设置适配器,这样就比较尴尬了。这时咱们就要用到ListView的另外一个特性了,那就是虽然不能在setAdapter以后调用addFooterView,但能够在setAdapter以前调用addFooterView,紧接着调用removeFooterView,将进度条隐藏掉,而后就能够随时调用addFooterView,而无论setAdapter是否已经被调用。git

代码实现

public class AutoLoadListView extends ListView implements AbsListView.OnScrollListener {

private static final String TAG = AutoLoadListView.class.getSimpleName();

private View vFooter;

private OnLoadListener mListener;

private int mFirstVisibleItem = 0;

private boolean mEnableLoad = true;

private boolean mIsLoading = false;

public AutoLoadListView(Context context) {

super(context);

init();

}

// 其余构造函数...

private void init() {

vFooter = LayoutInflater.from(getContext()).inflate(R.layout.auto_load_list_view_footer, null);

addFooterView(vFooter, null, false);

setOnScrollListener(this);

onLoadComplete();

}

public void setOnLoadListener(OnLoadListener listener) {

mListener = listener;

}

public void onLoadComplete() {

Log.d(TAG, "onLoadComplete");

mIsLoading = false;

removeFooterView(vFooter);

}

public void setEnable(boolean enable) {

mEnableLoad = enable;

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

boolean isPullDown = firstVisibleItem > mFirstVisibleItem;

if (mEnableLoad && !mIsLoading && isPullDown) {

int lastVisibleItem = firstVisibleItem + visibleItemCount;

if (lastVisibleItem >= totalItemCount - 1) {

onLoad();

}

}

mFirstVisibleItem = firstVisibleItem;

}

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

}

private void onLoad() {

Log.d(TAG, "onLoad");

mIsLoading = true;

addFooterView(vFooter, null, false);

if (mListener != null) {

mListener.onLoad();

}

}

}

复制代码

代码不长,就把它所有贴出来了,逻辑处理主要在onScroll函数里,首先根据上一个firstVisibleItem和当前的firstVisibleItem能够判断列表是否在向上滚动,而后比较firstVisibleItem + visibleItemCount和totalItemCount的大小能够判断列表是否滚动到了底部(即最后一个item已经可见),若是是向上滚动,滚动到了最后一条,且没有触发正在加载时,就能够触发自动加载更多了。 咱们来看下效果图 github

8d5be38a2a8a92d83cf6571b9c611ba5.png 你们能够运行

源码或下载

波尼音乐查看详细效果。

迁移自个人简书 2016.06.09bash

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最短路径--Floyd算法

Floyd算法 1.定义概览 Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。Floyd-Warshall算法的时间复杂度为O(N3)…

vue 打开一个iframe_Vue 之五 —— 单元测试

单元测试(unit testing):是指对软件中的最小可测试单元进行检查和验证。代码的终极目标有两个,第一个是实现需求,第二个是提高代码质量和可维护性。单元测试是为了提高代码质量和可维护性,是实现代码的第二…

Hibernate如何存储二级缓存条目

介绍 使用数据库访问抽象层的好处是可以透明地实现缓存,而不会泄漏到业务逻辑代码中 。 Hibernate Persistence Context充当事务后写式高速缓存 ,将实体状态转换转换为DML语句。 持久性上下文充当逻辑事务存储,并且每个Entity实例最多可以具…

file协议访问linux,Mozilla Firefox for Android 'file'协议未授权访问漏洞(CVE-2014-1501)

发布日期&#xff1a;2014-03-18更新日期&#xff1a;2014-04-02受影响系统&#xff1a;Mozilla Firefox < 28.0描述&#xff1a;--------------------------------------------------------------------------------BUGTRAQ ID: 66424CVE(CAN) ID: CVE-2014-1501Firefox是…

dcdc芯片效率不高的原因_半导体厂商如何做芯片的出厂测试?

本文来源于知乎&#xff0c;已获作者授权&#xff0c;谢谢。作者&#xff1a;温戈链接&#xff1a;https://www.zhihu.com/question/20584576/answer/1538640891知乎网友提问&#xff1a;半导体厂商如何做芯片的出厂测试&#xff1f;例如 Intel 的 CPU、手机处理器&#xff0c;…

魅族android n内测报名,不再万年Android 5.0! Flyme安卓N内测招募开启

科客点评&#xff1a;恰逢Flyme五周年庆&#xff0c;这算的是给煤油们最大的礼物。近日&#xff0c;魅族Flyme系统非常活跃&#xff0c;为国内友商操碎了心&#xff0c;为此适配了一众友商热门机型&#xff0c;刷了不少存在感&#xff0c;但这显然不是魅族要搞的“大事情”。6月…

db2数据库连接数 linux_介绍一款数据库管理工具DBeaver

之前连接MySQL一直使用的是navicate&#xff0c;挺好用的&#xff0c;不过是个付费软件&#xff0c;一直想找一款免费开源的软件来替代。今天偶然间发现DBeaver&#xff0c;这是一款基于java开发的数据库工具&#xff0c;而且可以支持Windows、Linux、MacOS多个平台&#xff0c…

jqgrid mvc_jqGrid,REST,AJAX和Spring MVC集成

jqgrid mvc两年多以前&#xff0c;我写了一篇关于如何在Struts2中实现优雅的CRUD的文章。 实际上&#xff0c;我必须就该主题写两篇文章&#xff0c;因为该主题如此广泛。 今天&#xff0c;我采用了一套更为流行的&#xff0c;完善的框架和库&#xff0c;采用了更为轻量级的现代…

ChronicleMap –具有堆外内存的Java体系结构

我的上一篇文章是在几周前写的&#xff0c;在收到一些有效的反馈后&#xff0c;我想澄清几点&#xff0c;作为本文的序言。 “ 使用零垃圾创建数百万个对象 ”的主要收获应该是&#xff0c;使用Chronicle&#xff0c;在编写Java程序时&#xff0c;您不会“局限于”使用jvm分配…

下列不属于html5语义元素,HTML5 新的语义元素

HTML5 提供了新的语义元素来明确一个Web页面的不同部分:HTML5中新的语义元素HTML5 元素标签定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。根据W3C HTML5文档: section 包含了一组内容及其标题。WWFThe World Wide Fund for Nature (WWF) is....HTM…

干加个偏旁可以变成什么字_面试官:“干”字加一笔,变成什么字?回答王和午字不对...

随着大学生的增多&#xff0c;如今的求职者进入职场&#xff0c;想到一份心仪的工作&#xff0c;最让人头疼的就是面试&#xff0c;越来越多的企业都需要全能型的人才&#xff0c;从而在面试的时候不仅要考核专业知识&#xff0c;面试官还要费尽心思出各种各样的题来考验求职者…

Oracle研学-查询

学自B站黑马程序员 1.单表查询 //查询水表编号为 30408 的业主记录 select * from T_OWNERS where watermeter30408 //查询业主名称包含“刘”的业主记录 select * from t_owners where name like %刘% //查询业主名称包含“刘”的并且门牌号包含 5 的业主记录 select * from…

国际站html代码,国际站必须看得懂的HTML代码

国际站必须看得懂的HTML代码國産〇〇柒大家每天都忙着找关键词&#xff0c;忙着写标题&#xff0c;忙着做各种的优化。目的就是想把自己的产品排名到前面&#xff0c;获得更多的曝光&#xff0c;带来更多的询盘。在这个过程中我们是客服同事也是一名搜索优化人员&#xff0c;但…

phoengap–node+websocket在线聊天室

该实验项目基于&#xff1a; phonegapnodewebsocket可以应用于android 和 ios平台。 已经测试通过。以下是测试的图&#xff1a; 首先是用node 架设服务器。 基本上都node 基于websocket的。 主要是对message做处理和判断来进行输出和逻辑处理 而客户都&#xff0c;由于android…

中音萨克斯指法表图_萨克斯的几个特殊指法记忆和几个概念

大家在平常的练习和吹奏的时候&#xff0c;经常会出现找不到相应的指法的情况&#xff0c;有经验的萨友们通过长时间的摸索&#xff0c;会找到其中的一些规律。实际上&#xff0c;能看懂“一图在手&#xff0c;不用再担心找不到指法了”里面的表格&#xff0c;可以起到同样的作…

git配置和使用

1、注册bitbucket用户登录bitbucket站点https://bitbucket.org/注册一个用户&#xff0c;注册后用户名为linjiqin&#xff0c;邮箱为linjiqindkhs.com。 2、Create repository(仓库)登录bitbucket&#xff0c;点击“Create”按钮会出现一个Create a new repository页面&#xf…

操作系统饥饿现象_操作系统心得体会

一、操作系统1.基本概念操作系统简称OS&#xff0c;是配置在计算机硬件上的第一层软件&#xff0c;它能够有效的组织和管理计算机系统中的硬件和软件资源&#xff0c;合理的组织计算机工作流程&#xff0c;控制程序的执行&#xff0c;并向用户提供各种服务功能。OS是现代计算机…

组态王怎么做超级曲线_鸭肉怎么做?大叔教你红烧鸭块,香气扑鼻,简单易做,超级好吃...

晚餐总是要有硬菜上桌的&#xff0c;所谓硬菜无非是鸡鸭鱼肉&#xff0c;买只鸭子吧&#xff0c;倒也是不在乎哪天吃大荤&#xff0c;鸭子算是减肥食谱&#xff0c;对高血压&#xff0c;心脏病有一定的好处&#xff0c;另外&#xff0c;癌症病人不能吃鸡&#xff0c;鸭子却是可…

使用Spring的缓存管理器缓存Web内容

在这篇文章中&#xff0c;我想向您展示如何使用Spring的CacheManager&#xff0c; Cacheable和JMX批注来缓存和管理Web内容的缓存的基础知识。 想象一下一个网上商店&#xff0c;它从远程WCMS&#xff08;Web内容管理系统&#xff09;获取一些内容&#xff0c;例如页眉&#xf…

学水利的想转行计算机,为什么说千万别学水利水电工程?附水利八大院排名2020年(最新)...

选择科目测一测我能上哪些大学选择科目领取你的专属报告>选择省份关闭请选择科目确定v>水利水电工程一直是国家建设中离不开的一个环节&#xff0c;该专业在父母眼中是也很有前途的专业&#xff0c;但近几年&#xff0c;许多人不太看好水利水电工程专业了&#xff0c;甚至…