ECode SimpleExpandableListAdapter::GetChildView(
    /* [in] */ Int32 groupPosition,
    /* [in] */ Int32 childPosition,
    /* [in] */ Boolean isLastChild,
    /* [in] */ IView* convertView,
    /* [in] */ IViewGroup* parent,
    /* [out] */ IView** view)
{
    VALIDATE_NOT_NULL(view);
    AutoPtr<IView> v;
    if (convertView == NULL) {
        NewChildView(isLastChild, parent, (IView**)&v);
    } else {
        v = convertView;
    }
    AutoPtr<IInterface> obj;
    mChildData->Get(groupPosition, (IInterface**)&obj);
    AutoPtr<IList> group = IList::Probe(obj);
    obj = NULL;
    group->Get(childPosition, (IInterface**)&obj);
    AutoPtr<IMap> children = IMap::Probe(obj);
    BindView(v, children, mChildFrom, mChildTo);
    *view = v;
    REFCOUNT_ADD(*view);
    return NOERROR;
}
ECode SimpleExpandableListAdapter::GetGroupView(
    /* [in] */ Int32 groupPosition,
    /* [in] */ Boolean isExpanded,
    /* [in] */ IView* convertView,
    /* [in] */ IViewGroup* parent,
    /* [out] */ IView** view)
{
    VALIDATE_NOT_NULL(view);
    AutoPtr<IView> v;
    if (convertView == NULL) {
        NewGroupView(isExpanded, parent, (IView**)&v);
    } else {
        v = convertView;
    }
    AutoPtr<IMap> group;
    mGroupData->Get(groupPosition, (IInterface**)&group);
    BindView(v, group, mGroupFrom, mGroupTo);
    *view = v;
    REFCOUNT_ADD(*view);
    return NOERROR;
}