Android ListView 和 Adapter 从本地/网络获取歌曲列表

本文内容

  • 环境
  • 项目结构
  • 演示1:SimpleAdapter
  • 演示2:BaseAdapter
  • 演示3:customlazylist
  • 演示4:customcompletelazylist

本文只给出演示概要,代码太多,贴出来意义不大,自己下载调试一下,点击此处下载。

本文通过四个示例,循序渐进地演示,将歌曲列表加载到 ListView 控件,歌曲列表,包括缩略图、歌手名、歌曲名等信息,或存放在本地,或以 JSON 形式存放在网络。

环境


  • Windows 2008 R2 64 位
  • Eclipse ADT V22.6.2,Android 4.4.3
  • 三星 GT-I9008L,Android OS 2.2.2

为何真机版本如此低~唉,最近同事手机坏了,刚买了房子,银行卡就剩1000块,没钱了,把我 Android 4.1 的手机借跑了~

 

项目结构


Android ListView 和 Adapter 从本地/网络获取歌曲列表

图 1 项目结构-Java 包

图 1 是该演示的相关 Java 包:

  • com.example.listviewdemo 包,是主程序;
  • com.example.listviewdemo.baseadapter 包,是 baseadapter 演示的主程序;
  • com.example.listviewdemo.simpleadapter 包,是 simpleadapter 演示的主程序;
  • com.example.listviewdemo.customlazylist 包,是 customlazylist 演示的主程序,以及继承 BaseAdapte 类的自定义类 LazyAdapter,负责返回 ListView 的每行 View
  • com.example.listviewdemo.customcompletelazylist 包,是 customcompletelazylist 演示的主程序,以及继承 BaseAdapte 类的自定义类 CompleteLazyList,负责返回 ListView 的每行 View
  • com.example.listviewdemo.data 包,是演示 1、2 中使用的测试数据;
  • com.example.listviewdemo.utils 包,工具类都在这里,包括文件缓存、内存缓存、加载图片、网络请求和流工具。

Android ListView 和 Adapter 从本地/网络获取歌曲列表

图 2 项目结构-资源和页面

  • res/drawable-hdpi 是项目所需的图片、图标资源;
  • res/layout 是程序界面,其中 main.xml 是主程序界面;item.xml 是 ListView 中每行的页面,该页面是这几个演示通用的。

Android ListView 和 Adapter 从本地/网络获取歌曲列表

图 3 程序主

演示1:SimpleAdapter


该演示直接利用 android.widget.SimpleAdapter,把歌曲列表(包括缩略图、歌手名字、歌曲名称)添加到 ListView 控件。

 

演示2:BaseAdapter


该演示利用一个更底层、功能更强大的 android.widget.BaseAdapter 类,重写相应的方法,尤其是 public View getView(int position, View convertView, ViewGroup parent) 方法,把歌曲列表添加到 ListView 控件。

 

演示 1 和演示 2,加载歌曲列表(包括缩略图、歌手名字、歌曲名称)都在本地。下面两个演示,缩略图都是通过网络获取的,演示 3 的歌曲列表信息存放在本地,通过连接获得并缓存图片,显示在 ListView 控件,而演示 4 是通过网络获得歌曲列表的 JSON,这种方式更普遍,在客户端解析 org.json.JSONArray,获得图片并缓存,显示在 ListView 控件。

另外,歌曲列表的地址是 http://files.cnblogs.com/liuning8023/Android_Music_Demo_json_array.xml,虽然是 XML 文件,但内部是 JSON 格式,这对程序不会造成任何影响,cnblog 不让上传 .JSON 文件。

总之,演示 1、2 与演示 3、4 相比,只是获得歌曲列表的途径不同,运行结果几乎一样。这四个演示是循序渐进的,也是本人的研究和思考的过程。

Android ListView 和 Adapter 从本地/网络获取歌曲列表

图 4 下面四个演示的结果

第一个:simpleadapter 演示;第二个:baseadapter 演示;第三个:customlazylist 演示;第四个:customcompletelazylist 演示

演示3:customlazylist


该演示的歌曲列表保存在本地,通过网络获得缩略图。缩略图可以缓存在外存和内存中。

 

演示4:customcompletelazylist


该演示的歌曲列表保存在网络,通过网络获得歌曲列表的 JSON 文件,解析成 org.json.JSONArray,利用缩略图链接获得缩略图,并缓存在外存和内存中,显示在 ListView 控件。

 

别忘了,在 AndriodManifest.xml 添加允许 android 访问网络和外存的小节。

 

下载 Demo

Android ListView 和 Adapter 从本地/网络获取歌曲列表,布布扣,bubuko.com

Android ListView 和 Adapter 从本地/网络获取歌曲列表

上一篇:HttpApplication中的异步线程


下一篇:iOS-多线程 ,整理集锦,多种线程的创建