`

android播放器(music player)源码分析2(BaseExpandableListAdapter, SimpleCursorTreeAdapter

 
阅读更多

1) SimpleExpandableListAdapter BaseExpandableListAdapter

其构造函数接受八个参数

Java代码
  1. this(context,groupData,expandedGroupLayout,collapsedGroupLayout,groupFrom,groupTo,childData,childLayout,lastChildLayout,childFrom,childTo);

一般在使用中 expandedGroupLayout, collapsedGroupLayout 是一个参数生成的, childLayout, lastChildLayout 也是一个参数生成的。之所以区别它们是由于存在这样的需求:展示不同动作下不同的 view (展开和合起)、展示不同组之间最后一个孩子节点的现实布局。

这里需要注意一点在 BaseExpandableListAdapter 中,如果使用以下类似 newGroupView 方法

Java代码
  1. publicViewnewGroupView(booleanisExpanded,ViewGroupparent){
  2. returnmInflater.inflate((isExpanded)?mExpandedGroupLayout:mCollapsedGroupLayout,
  3. parent,false);

在绑定其内容时要注意以下几点:

  1. 其绑定的内容一定要和 groupPosition 相对应,其内容最好不要动态生成否则会导致不稳定的绑定。类似如果是要绑定孩子节点的内容,则要和 groupPosition childPosition 一一对应。并且每次调用都需要重写绑定一次,不能根据 convertView 进行判定。( convertView getChildView 等方法里面的参数)
  2. 重写 getChild 方法时需要返回自己所需的数据结构,视情况定义自己的数据结构。
  3. mInflater.inflate 方法在实例化一个 layout 时,可能会创建了别的 group layout ,(这个暂时没有弄清楚为什么会有这样的原因,帮忙补充一下)。可是当使用 TextView textView = new TextView(Class.this) 时,不会产生这样的问题,每次绑定内容时 convertView 一定是空的。

2 SimpleCursorTreeAdapter ResourceCursorTreeAdapter

该类接受一个 cursor 作为参数,而 musicplayer 中则接受一个 null 值。这里使用 AsyncQueryHandler 生成内部的 cursor

其流程如下:

  1. 首先创建在适配其中创建 AsyncQueryHandler ,此时 cursor 为空
  2. 在主程序中调用适配器的 AsyncQueryHandler 开始一个 sql 语句,此时在重载的 completeXX 方法中将生成的 cursor 赋给适配器

Java代码
  1. @Override
  2. protectedvoidonQueryComplete(inttoken,Objectcookie,Cursorcursor){
  3. //Log.i("@@@","querycomplete:"+cursor.getCount()+""+mActivity);
  4. if(cursor!=null){
  5. cursor=mActivity.mergedCursor(cursor);
  6. }
  7. mActivity.init(cursor);
  8. }

3.适配器自动调用 get bind 方法生成布局。在绑定其内容时要注意使用了 cursor 不能够自定义 group child 的大小,其大小由 cursor 指定

分享到:
评论

相关推荐

    Android BaseExpandableListAdapter 教程

    NULL 博文链接:https://xieruilin.iteye.com/blog/726494

    Android BaseExpandableListAdapter 教程.doc

    在Android开发中,`BaseExpandableListAdapter`是一个用于创建可扩展列表视图(ExpandableListView)的数据适配器。这个适配器允许开发者构建复杂的列表结构,其中包含可展开和折叠的组(groups),每个组内又包含多...

    Android 树形控件源码.rar

    在Android开发中,树形控件(TreeView)是一种常见的...通过分析和理解这个"Android 树形控件源码",开发者可以学习到Android自定义控件的实现技巧,提高自己的编程能力,并且能应用于实际项目,创建更复杂的用户界面。

    可扩展listview demo BaseExpandableListAdapter

    在Android开发中,`ExpandableListView`是一种非常实用的组件,它允许用户展开和折叠不同的组,每个组下可以包含多个子项。这种视图在显示层次结构数据时特别有用,比如目录结构、菜单或者组织架构等。本示例"可扩展...

    Android-SlideExpandableListView源码.zip

    《深入解析Android-SlideExpandableListView源码》 在Android应用开发中,滑动可展开的ListView(SlideExpandableListView)是一种常见的控件,它扩展了标准的ListView,增加了子项可折叠和展开的交互功能,提升了...

    Android学习资料

    收集的一些关于Android的学习...Android之Adapter用法总结,Android中图片的处理,BaseExpandableListAdapter的使用,反编译android app,详解 Android 的 Activity 组件,需要的朋友可以下载查看(直接双击html文件查看即可)

    Android 实现QQ好友列表源码.zip

    在某些android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的。接触Android,也才一年的时间,大部分时间花在工作上(解bug。。。),界面上开发很少参与。自己维护的系统应用里,有个...

    安卓Android源码——expandableList扩展列表.zip

    8. **源码分析** 压缩包中的“源码说明.txt”很可能是对示例代码的解释,可能包括如何设置适配器,如何处理点击事件,以及如何自定义视图等内容。通过阅读源码,可以深入理解ExpandableListView的工作原理。 9. **...

    ExpandableListView多级目录

    在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表,特别适合于呈现具有层级关系的数据,例如多级目录、组织结构等。本篇文章将详细探讨如何利用`ExpandableListView`来实现...

    Android代码-基于自定义适配器的ExpandableListView源码.zip

    这个`Android代码-基于自定义适配器的ExpandableListView源码.zip`文件包含了一个示例项目,演示了如何使用自定义适配器来实现`ExpandableListView`的功能。以下是对这个主题的详细讲解: 1. **ExpandableListView...

    安卓Android源码——-SlideExpandableListView-master.zip

    2. **触摸事件处理**: 源码会包含对 `MotionEvent` 的处理,以便检测用户的滑动操作。理解 `onTouchEvent()` 方法的工作原理以及如何从中提取滑动信息至关重要。 3. **动画效果**: 展开和折叠的过程通常会伴随着...

    Android 仿QQ多级列表框源码

    通过分析和理解这个"Android 仿QQ多级列表框源码",开发者不仅可以掌握ExpandableListView的使用,还能学习到如何构建复杂交互的UI,以及如何处理层级数据。此外,对于源码的阅读和调试,也能提升Android应用开发的...

    Android程序研发源码Android 基于自定义适配器的ExpandableListView源码.zip

    在Android开发中,ExpandableListView是一个非常重要的组件,它允许...这个源码项目应该提供了具体的实现示例,通过分析和学习,开发者可以更好地掌握Android UI组件的高级用法,以及如何优雅地处理复杂的数据结构。

    Android之ExpandableListView控件

    本文将深入探讨`ExpandableListView`的使用方法、核心特性以及如何通过源码分析来优化其性能。 首先,`ExpandableListView`的基本使用包括设置数据适配器(`ExpandableListAdapter`)和监听器(`...

    Android 基于自定义适配器的ExpandableListView源码.zip

    7. **源码分析** “源码说明.txt”可能包含了对示例代码的解释和指导,帮助开发者更好地理解和学习。通过阅读源码,可以了解自定义适配器的具体实现方式,以及如何与ExpandableListView配合工作。 8. **图片资源**...

    Android高级应用源码-一个ExpandableListView的例子,实现多级菜单分类展示.zip

    总之,通过分析`Android高级应用源码-一个ExpandableListView的例子,实现多级菜单分类展示.zip`中的源码,开发者可以学习到如何在Android应用程序中创建具有层次结构的交互式列表,这对于构建如导航菜单、目录树等...

    Android 仿团购应用图片菜单效果源码.zip

    通过分析和学习这个源码项目,开发者可以掌握如何在Android应用中创建具有吸引力的图片菜单,提升应用的交互性和用户体验。同时,这也是一个实践自定义控件和数据绑定的好例子,对于增强Android开发技能非常有帮助。

    安卓Android源码——仿QQ多级列表框源码.zip

    2. 自定义Adapter:继承BaseExpandableListAdapter,重写必要的方法,如getGroupCount()、getChildrenCount()、getGroupView()和getChildView(),以绑定数据到视图上。 3. 视图的创建与复用:利用LayoutInflater来...

    Android应用源码之自定义适配器的ExpandableListView.zip

    在Android中,我们通常继承`BaseExpandableListAdapter`来创建自己的适配器。这个适配器需要重写以下几个关键方法: 1. `getGroupCount()`: 返回父项的数量。 2. `getChildrenCount(int groupPosition)`: 给定父项...

    Android 仿QQ多级列表框源码-IT计算机-毕业设计.zip

    在Android开发中,多级列表框是一种常见的交互...通过分析和修改源码,学生可以深入学习Android编程,为未来的软件开发工作打下坚实基础。同时,这样的项目也适用于论文写作,展示Android应用开发的技术实现和创新点。

Global site tag (gtag.js) - Google Analytics