0

展開可能なリスト ビューがあります。4 つのセクションがあります。最初の 2 つのセクションでは、テキストを表示したいと考えています。3番目に画像を表示し、4番目にビデオを表示したい。要するに、すべての親は異なる子供をもうけています。これをアンドロイドの展開可能なリストに実装する方法は?

ありがとう、ネハ

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

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 );
        }
    }
于 2012-10-12T07:42:07.337 に答える