レイアウトを動的に追加したい｡


レイアウトを動的に追加するコードを書いたのですが､うまく行かず表示されません｡  
以下の`three_grid_row.xml`に`grid_item.xml`を3つ水平に並べたものを複数作成し､ルートビューである`fragment_video_info.xml`のLinearLayoutである`suggestion_video_list`に追加します｡  
実行してみるとエラーは出ないのですが`suggest_video_list`が表示されません｡

**`fragment_video_info.xml`の一部:**

[code]

     <LinearLayout
            android:id="@+id/suggestion_video_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
     </LinearLayout>
    
[/code]

**`three_grid_row.xml`:**

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:orientation="horizontal">
    
    </LinearLayout>
    
[/code]

**`grid_item.xml`:**

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <ImageView
                    android:id="@+id/iv_thumbnail"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
                <TextView
                    android:id="@+id/suggest_duration"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="65dp"
                    android:layout_marginRight="4dp"
                    android:background="@drawable/border"
                    android:textColor="#FFFFFF"/>
            </RelativeLayout>
            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/suggest_video_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="2"
                    android:textAppearance="?android:attr/textAppearanceMediumInverse"/>
                <TextView
                    android:id="@+id/suggest_ch_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/suggest_video_name"
                    android:textAppearance="?android:attr/textAppearanceSmall"/>
                <TextView
                    android:id="@+id/suggest_video_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/suggest_ch_name"
                    android:textAppearance="?android:attr/textAppearanceSmall"/>
            </RelativeLayout>
    
        </LinearLayout>
    </FrameLayout>
    
[/code]

**処理部:**

[code]

    if (!relatedVideoList.isEmpty()) {
                //layoutInflaterを取得
                LayoutInflater inflater = (LayoutInflater) getActivity().getApplicationContext()
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
                //LinearLayoutを入れる配列を作る
                LinearLayout[] gridRowList = new LinearLayout[7];
                for (int i = 0; i < 3; i++) {
                    gridRowList[i] = (LinearLayout) inflater.inflate(R.layout.three_grid_row, null);
                }
                for (int i = 3; i < 7; i++) {
                    gridRowList[i] = (LinearLayout) inflater.inflate(R.layout.three_grid_row, null);
                    gridRowList[i].setVisibility(View.GONE);
                }
    
                //LinearLayoutに追加
                int count = 0;
                for (VideoItems item : relatedVideoList) {
                    FrameLayout gridItem = null;
                    if (count < 3) {
                        gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, gridRowList[0], false);
                    } else if (count >= 3 && count < 6) {
                        gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, gridRowList[1], false);
                    } else if (count >= 6 && count < 9) {
                        gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, gridRowList[2], false);
                    } else if (count >= 9 && count < 12) {
                        gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, gridRowList[3], false);
                    } else if (count >= 12 && count < 15) {
                        gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, gridRowList[4], false);
                    } else if (count >= 15 && count < 18) {
                        gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, gridRowList[5], false);
                    } else if (count >= 18 && count < 21) {
                        gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, gridRowList[6], false);
                    }
    
                    //Viewをセット
                    if (gridItem != null) {
                        SuggestViewHolder holder = new SuggestViewHolder();
                        setGridItemView(gridItem, holder);
                        setGridItemContents(holder, item);
                    }
                    count++;
                }
    
                //LinearLayoutにViewをセット
                LinearLayout suggestVideoContainer = (LinearLayout) view.findViewById(R.id.suggestion_video_list);
                for (LinearLayout item : gridRowList) {
                    suggestVideoContainer.addView(item);
                }
    
                //関連動画を出すボタンの有無をセットする
                if (gridRowList.length < 4 ) {
                    LinearLayout suggestButton = (LinearLayout)view.findViewById(R.id.suggest_exp_button);
                    suggestButton.setVisibility(View.GONE);
                }
            }
    
[/code]

**`setGridItemView`:**

[code]

     private void setGridItemView(FrameLayout gridItem, SuggestViewHolder holder){
        holder.suggestThumbnail = (ImageView)gridItem.findViewById(R.id.iv_thumbnail);
        holder.suggestDuration = (TextView)gridItem.findViewById(R.id.suggest_duration);
        holder.suggestVideoName = (TextView)gridItem.findViewById(R.id.suggest_video_name);
        holder.suggestChannelName = (TextView)gridItem.findViewById(R.id.suggest_ch_name);
        holder.suggestViewCount = (TextView)gridItem.findViewById(R.id.suggest_video_view);
    }
    
[/code]

**`setGridItemContents`:**

[code]

    private void setGridItemContents(SuggestViewHolder holder, VideoItems videoItems){
        Picasso.with(getActivity()).load(videoItems.snippet.thumbnails.default1.url).into(holder.suggestThumbnail);
        holder.suggestChannelName.setText(videoItems.snippet.channelTitle);
        holder.suggestDuration.setText(durationConverter(videoItems.contentDetails.duration));
        holder.suggestVideoName.setText(videoItems.snippet.title);
        holder.suggestViewCount.setText(numberConverter(videoItems.statistics.viewCount, 0) + " " + getString(R.string.views));
    }
    
[/code]

なにか､間違えているところがありましたら教えて下さい｡よろしくお願いします｡



[code]

    gridItem = (FrameLayout) inflater.inflate(R.layout.grid_item, null); 
    gridRowList[0].addView(gridItem);  
    
[/code]

こんな感じの処理にしてもダメですか？




この手のレイアウトがうまくいかないときの調べ方のコツを書いておきます。

いくつかあるのですが、まずはいろいろな View/ViewGroup に対して  
android:background="#f00" の様な感じで色をつけていって、  
今見えているのがどの View になっているのかを確認していくのがお手軽です。  
ハマった時はこの方法で、意図どおりのレイアウトになっているかを一歩ずつ  
確認していくといいです。

