0

我有一个可扩展的列表视图。它有4个部分。在前两个部分中,我想显示文本。在第三个中我想显示图像,在第四个中我想显示一个视频。简而言之,每个父母都有一个不同的孩子。如何在 android 的可扩展列表中实现这一点?

谢谢, 内哈

4

2 回答 2

1

您需要使用 ExpandableListAdapter 根据项目所在的组返回不同类型的视图。

所以在你的列表适配器中你覆盖

getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)

并根据 groupPosition 做一些事情,例如

getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (groupPosition == 0) return text views for this child
if (groupPositon == 1) return image views for this child
}

那应该让你开始。从那里很容易。

于 2011-01-03T13:24:35.387 回答
0

如果您正在扩展 CursorTreeAdapter 以制作 ExpandableListAdapter,您应该管理在 newChildView() 中创建不同类型的视图并将它们绑定在 bindChildView() 中。您可以使用光标中的数据来区分不同的情况。

示例代码

    @Override
    protected View newChildView(
        Context context,
        Cursor cursor,
        boolean isLastChild,
        ViewGroup parent )
    {
        LayoutInflater mInflater = LayoutInflater.from( context );
        String firstColumnName = cursor.getColumnName( 0 );
        if( firstColumnName.equals( "_id" )) {
            return mInflater.inflate( R.layout.main_list_item, parent, false );                
        } else if( firstColumnName.equals( "name" )){
            return mInflater.inflate( R.layout.search_list_item, parent, false );                
        } else {
            throw new IllegalArgumentException( "Unknown firstColumnName:"
                + firstColumnName );
        }
    }

    @Override
    protected void bindChildView(
        View view,
        Context context,
        Cursor cursor,
        boolean isLastChild )
    {
        String firstColumnName = cursor.getColumnName( 0 );
        if( firstColumnName.equals( "_id" )) {
            bindMainView( view, context, cursor, isLastChild );
        } else if( firstColumnName.equals( "name" )){
            bindSearchView( view, context, cursor, isLastChild );
        } else {
            throw new IllegalArgumentException( "Unknown firstColumnName:"
                + firstColumnName );
        }
    }
于 2012-10-12T07:42:07.337 回答