android播放器(music player)源码分析2(BaseExpandableListAdapter, SimpleCursorTreeAdapter
来源:互联网 发布:json解析天气预报 编辑:程序博客网 时间:2024/05/21 11:58
1) SimpleExpandableListAdapter 和 BaseExpandableListAdapter
其构造函数接受八个参数
- this(context, groupData, expandedGroupLayout, collapsedGroupLayout, groupFrom, groupTo, childData, childLayout, lastChildLayout, childFrom, childTo);
一般在使用中 expandedGroupLayout, collapsedGroupLayout 是一个参数生成的, childLayout, lastChildLayout 也是一个参数生成的。之所以区别它们是由于存在这样的需求:展示不同动作下不同的 view (展开和合起)、展示不同组之间最后一个孩子节点的现实布局。
这里需要注意一点在 BaseExpandableListAdapter 中,如果使用以下类似 newGroupView 方法
- public View newGroupView(boolean isExpanded, ViewGroup parent) {
- return mInflater.inflate((isExpanded) ? mExpandedGroupLayout : mCollapsedGroupLayout,
- parent, false);
在绑定其内容时要注意以下几点:
- 其绑定的内容一定要和 groupPosition 相对应,其内容最好不要动态生成否则会导致不稳定的绑定。类似如果是要绑定孩子节点的内容,则要和 groupPosition 、 childPosition 一一对应。并且每次调用都需要重写绑定一次,不能根据 convertView 进行判定。( convertView 是 getChildView 等方法里面的参数)
- 重写 getChild 方法时需要返回自己所需的数据结构,视情况定义自己的数据结构。
- mInflater.inflate 方法在实例化一个 layout 时,可能会创建了别的 group 的 layout ,(这个暂时没有弄清楚为什么会有这样的原因,帮忙补充一下)。可是当使用 TextView textView = new TextView(Class.this) 时,不会产生这样的问题,每次绑定内容时 convertView 一定是空的。
2 ) SimpleCursorTreeAdapter 和 ResourceCursorTreeAdapter
该类接受一个 cursor 作为参数,而 musicplayer 中则接受一个 null 值。这里使用 AsyncQueryHandler 生成内部的 cursor 。
其流程如下:
- 首先创建在适配其中创建 AsyncQueryHandler ,此时 cursor 为空
- 在主程序中调用适配器的 AsyncQueryHandler 开始一个 sql 语句,此时在重载的 completeXX 方法中将生成的 cursor 赋给适配器
- @Override
- protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
- //Log.i("@@@", "query complete: " + cursor.getCount() + " " + mActivity);
- if (cursor != null) {
- cursor = mActivity.mergedCursor(cursor);
- }
- mActivity.init(cursor);
- }
3.适配器自动调用 get 和 bind 方法生成布局。在绑定其内容时要注意使用了 cursor 不能够自定义 group 和 child 的大小,其大小由 cursor 指定
- android播放器(music player)源码分析2(BaseExpandableListAdapter, SimpleCursorTreeAdapter
- android播放器(music player)源码分析5(在线播放功能)
- android播放器(music player)源码分析1-Service,Binder,ServiceConnection
- android播放器(music player)源码分析3(页面解析,ArrayListCursor)
- android播放器(music player)源码分析4(StreamStarter,URLEncoder)
- android播放器(music player)源码分析1-Service,Binder,ServiceConnection
- android源码解析------Music 音乐播放器
- 享听音乐播放器(Enjoy listening to music player)
- Android中music播放器源码要点详解【安卓music源码进化一】
- Android中music播放器源码要点详解【安卓music源码进化一】
- 源码 Music音乐播放器代码结构
- Android实战 - 音心播放器 (Music Service 实现)
- ubuntu 12.04 安装深度影音播放器(deepin-music-player)+百度音乐插件
- Vue.js写一个音乐播放器.A music player by Vue.js
- 开源安卓播放器:Dolphin Player 简单分析
- Android适配器之-----SimpleCursorTreeAdapter
- android music源码学习
- android music源码学习
- map,set,list区别
- 用谷歌浏览器来当手机模拟器
- 15 款免费IDE
- [转]ARToolKit的安装配置及例子演示(WindowsXP,VC++6.0开发环境)
- centos添加yum官方repo源,安装,升级php5.2.x
- android播放器(music player)源码分析2(BaseExpandableListAdapter, SimpleCursorTreeAdapter
- 编程之美--整数中1的个数
- eclipse 两点设置:包结构显示设置;类快速映射对应的包
- 用usb安装ubuntu server 10.04
- android播放器(music player)源码分析3(页面解析,ArrayListCursor)
- Java重写方法
- android播放器(music player)源码分析4(StreamStarter,URLEncoder)
- vivi 命令详细
- ip段的详细划分详解[转]