展開可能なリスト ビューがあります。4 つのセクションがあります。最初の 2 つのセクションでは、テキストを表示したいと考えています。3番目に画像を表示し、4番目にビデオを表示したい。要するに、すべての親は異なる子供をもうけています。これをアンドロイドの展開可能なリストに実装する方法は?
ありがとう、ネハ
展開可能なリスト ビューがあります。4 つのセクションがあります。最初の 2 つのセクションでは、テキストを表示したいと考えています。3番目に画像を表示し、4番目にビデオを表示したい。要するに、すべての親は異なる子供をもうけています。これをアンドロイドの展開可能なリストに実装する方法は?
ありがとう、ネハ
アイテムが属するグループに応じて異なるタイプのビューを返す 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
}
これで始められるはずです。そこからはとても簡単です。
ExpandableListAdapterを作成するためにCursorTreeAdapterを拡張する場合は、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 );
}
}