我有一个可扩展的列表视图。它有4个部分。在前两个部分中,我想显示文本。在第三个中我想显示图像,在第四个中我想显示一个视频。简而言之,每个父母都有一个不同的孩子。如何在 android 的可扩展列表中实现这一点?
谢谢, 内哈
我有一个可扩展的列表视图。它有4个部分。在前两个部分中,我想显示文本。在第三个中我想显示图像,在第四个中我想显示一个视频。简而言之,每个父母都有一个不同的孩子。如何在 android 的可扩展列表中实现这一点?
谢谢, 内哈
您需要使用 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
}
那应该让你开始。从那里很容易。
如果您正在扩展 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 );
}
}