我有一个可扩展的列表视图。它有4个部分。 在前两部分我想显示文字。 在第三个我想显示图像,在第四个我想显示一个视频。 总之,每个父母都有一个不同的孩子。 如何在android中的可扩展列表中实现它?
谢谢, NEHA
答案 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 );
}
}