1) SimpleExpandableListAdapter 和 BaseExpandableListAdapter
其构造函数接受八个参数
- this(context,groupData,expandedGroupLayout,collapsedGroupLayout,groupFrom,groupTo,childData,childLayout,lastChildLayout,childFrom,childTo);
this(context, groupData, expandedGroupLayout, collapsedGroupLayout, groupFrom, groupTo, childData, childLayout, lastChildLayout, childFrom, childTo);
一般在使用中 expandedGroupLayout, collapsedGroupLayout 是一个参数生成的, childLayout, lastChildLayout 也是一个参数生成的。之所以区别它们是由于存在这样的需求:展示不同动作下不同的 view (展开和合起)、展示不同组之间最后一个孩子节点的现实布局。
这里需要注意一点在 BaseExpandableListAdapter 中,如果使用以下类似 newGroupView 方法
- publicViewnewGroupView(booleanisExpanded,ViewGroupparent){
-
returnmInflater.inflate((isExpanded)?mExpandedGroupLayout:mCollapsedGroupLayout,
-
parent,false);
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
-
protectedvoidonQueryComplete(inttoken,Objectcookie,Cursorcursor){
-
-
if(cursor!=null){
- cursor=mActivity.mergedCursor(cursor);
- }
- mActivity.init(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 指定
相关推荐
NULL 博文链接:https://xieruilin.iteye.com/blog/726494
在Android开发中,`BaseExpandableListAdapter`是一个用于创建可扩展列表视图(ExpandableListView)的数据适配器。这个适配器允许开发者构建复杂的列表结构,其中包含可展开和折叠的组(groups),每个组内又包含多...
在Android开发中,树形控件(TreeView)是一种常见的...通过分析和理解这个"Android 树形控件源码",开发者可以学习到Android自定义控件的实现技巧,提高自己的编程能力,并且能应用于实际项目,创建更复杂的用户界面。
在Android开发中,`ExpandableListView`是一种非常实用的组件,它允许用户展开和折叠不同的组,每个组下可以包含多个子项。这种视图在显示层次结构数据时特别有用,比如目录结构、菜单或者组织架构等。本示例"可扩展...
《深入解析Android-SlideExpandableListView源码》 在Android应用开发中,滑动可展开的ListView(SlideExpandableListView)是一种常见的控件,它扩展了标准的ListView,增加了子项可折叠和展开的交互功能,提升了...
收集的一些关于Android的学习...Android之Adapter用法总结,Android中图片的处理,BaseExpandableListAdapter的使用,反编译android app,详解 Android 的 Activity 组件,需要的朋友可以下载查看(直接双击html文件查看即可)
在某些android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的。接触Android,也才一年的时间,大部分时间花在工作上(解bug。。。),界面上开发很少参与。自己维护的系统应用里,有个...
8. **源码分析** 压缩包中的“源码说明.txt”很可能是对示例代码的解释,可能包括如何设置适配器,如何处理点击事件,以及如何自定义视图等内容。通过阅读源码,可以深入理解ExpandableListView的工作原理。 9. **...
在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表,特别适合于呈现具有层级关系的数据,例如多级目录、组织结构等。本篇文章将详细探讨如何利用`ExpandableListView`来实现...
这个`Android代码-基于自定义适配器的ExpandableListView源码.zip`文件包含了一个示例项目,演示了如何使用自定义适配器来实现`ExpandableListView`的功能。以下是对这个主题的详细讲解: 1. **ExpandableListView...
2. **触摸事件处理**: 源码会包含对 `MotionEvent` 的处理,以便检测用户的滑动操作。理解 `onTouchEvent()` 方法的工作原理以及如何从中提取滑动信息至关重要。 3. **动画效果**: 展开和折叠的过程通常会伴随着...
通过分析和理解这个"Android 仿QQ多级列表框源码",开发者不仅可以掌握ExpandableListView的使用,还能学习到如何构建复杂交互的UI,以及如何处理层级数据。此外,对于源码的阅读和调试,也能提升Android应用开发的...
在Android开发中,ExpandableListView是一个非常重要的组件,它允许...这个源码项目应该提供了具体的实现示例,通过分析和学习,开发者可以更好地掌握Android UI组件的高级用法,以及如何优雅地处理复杂的数据结构。
本文将深入探讨`ExpandableListView`的使用方法、核心特性以及如何通过源码分析来优化其性能。 首先,`ExpandableListView`的基本使用包括设置数据适配器(`ExpandableListAdapter`)和监听器(`...
7. **源码分析** “源码说明.txt”可能包含了对示例代码的解释和指导,帮助开发者更好地理解和学习。通过阅读源码,可以了解自定义适配器的具体实现方式,以及如何与ExpandableListView配合工作。 8. **图片资源**...
总之,通过分析`Android高级应用源码-一个ExpandableListView的例子,实现多级菜单分类展示.zip`中的源码,开发者可以学习到如何在Android应用程序中创建具有层次结构的交互式列表,这对于构建如导航菜单、目录树等...
通过分析和学习这个源码项目,开发者可以掌握如何在Android应用中创建具有吸引力的图片菜单,提升应用的交互性和用户体验。同时,这也是一个实践自定义控件和数据绑定的好例子,对于增强Android开发技能非常有帮助。
2. 自定义Adapter:继承BaseExpandableListAdapter,重写必要的方法,如getGroupCount()、getChildrenCount()、getGroupView()和getChildView(),以绑定数据到视图上。 3. 视图的创建与复用:利用LayoutInflater来...
在Android中,我们通常继承`BaseExpandableListAdapter`来创建自己的适配器。这个适配器需要重写以下几个关键方法: 1. `getGroupCount()`: 返回父项的数量。 2. `getChildrenCount(int groupPosition)`: 给定父项...
在Android开发中,多级列表框是一种常见的交互...通过分析和修改源码,学生可以深入学习Android编程,为未来的软件开发工作打下坚实基础。同时,这样的项目也适用于论文写作,展示Android应用开发的技术实现和创新点。