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);
在绑定其内容时要注意以下几点:
2 ) SimpleCursorTreeAdapter 和 ResourceCursorTreeAdapter
该类接受一个 cursor 作为参数,而 musicplayer 中则接受一个 null 值。这里使用 AsyncQueryHandler 生成内部的 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 指定