如何在android中的可扩展列表视图的每个部分中添加不同的子项?

时间:2011-01-03 13:15:49

标签: android expandablelistview

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

谢谢, NEHA

2 个答案:

答案 0 :(得分: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
}

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

答案 1 :(得分: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 );
        }
    }