首页 > 代码库 > Android ListView 和 Adapter 从本地/网络获取歌曲列表
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 的手机借跑了~
项目结构
图 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 包,工具类都在这里,包括文件缓存、内存缓存、加载图片、网络请求和流工具。
图 2 项目结构-资源和页面
- res/drawable-hdpi 是项目所需的图片、图标资源;
- res/layout 是程序界面,其中 main.xml 是主程序界面;item.xml 是 ListView 中每行的页面,该页面是这几个演示通用的。
图 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 相比,只是获得歌曲列表的途径不同,运行结果几乎一样。这四个演示是循序渐进的,也是本人的研究和思考的过程。
图 4 下面四个演示的结果
第一个:simpleadapter 演示;第二个:baseadapter 演示;第三个:customlazylist 演示;第四个:customcompletelazylist 演示
演示3:customlazylist
该演示的歌曲列表保存在本地,通过网络获得缩略图。缩略图可以缓存在外存和内存中。
演示4:customcompletelazylist
该演示的歌曲列表保存在网络,通过网络获得歌曲列表的 JSON 文件,解析成 org.json.JSONArray,利用缩略图链接获得缩略图,并缓存在外存和内存中,显示在 ListView 控件。
别忘了,在 AndriodManifest.xml 添加允许 android 访问网络和外存的小节。
下载 Demo