4372


androidアプリで､TableRowを動的に作成しようと思い､次のコードを書いたのですが､何故かpositionの列だけ表示されません｡

[code]

    //main.class
    ViewGroup vg = (ViewGroup)findViewById(R.id.tb_finish);
        for(int i=0; i<globals.numPlayer; i++){
            //行の追加
            getLayoutInflater().inflate(R.layout.table_row_3, vg);
            //文字設定
            TableRow tr = (TableRow)vg.getChildAt(i);
            //名前の列
            String name;
            //役職
            String position;
            //存在するか
            String isAlive;
    
            //設定
            name = globals.pList.get(i).name;
            position = globals.pList.get(i).getPosition(FinishActivity.this);
            if(globals.pList.get(i).isAlive==true){
                isAlive = getString(R.string.alive);
            }else{
                isAlive = getString(R.string.dead);
            }
    
            ((TextView)(tr.getChildAt(0))).setText(name);
            ((TextView)(tr.getChildAt(1))).setText(position);
            ((TextView)(tr.getChildAt(2))).setText(isAlive);
        }
    
[/code]

以下はレイアウトXMLです｡

[code]

    //main.xml
    <TableLayout 
            android:id="@+id/tb_finish"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:collapseColumns="1"
            android:layout_below="@+id/tv_wincamp">
    
    </TableLayout>
    
    //table_row_3
    <?xml version="1.0" encoding="utf-8"?>
    <TableRow xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    
    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
    </TableRow>
    
[/code]

以下が`getPosition()`です｡

[code]

        public String getPosition(Context context){
        switch (this.position) {
        case 0:
            return context.getString(R.string.civilian);
        case 1:
            return context.getString(R.string.diviner);
        case 2:
            return context.getString(R.string.mystic);
        case 3:
            return context.getString(R.string.knight);
        case 4:
            return context.getString(R.string.freemason);
        case 5:
            return context.getString(R.string.monstercat);
        case 6:
            return context.getString(R.string.werewolf);
        case 7:
            return context.getString(R.string.fanatic);
        case 8:
            return context.getString(R.string.vampire);
        default:
            return "hoge";
    
        }
    
[/code]

このメソッドは`Player`というクラスのメソッドです｡ `Player`はActivityを継承していません｡


CC BY-SA 3.0
2015-01-10T07:42:45.763
4364
2015-01-10T11:08:28.417
2015-01-10T10:29:04.140
7232
7232
question
android java android-layout
android のテーブルレイアウトの動的作成｡


`android:collapseColumns=1`のためです。

指定された列は折りたたまれ、非表示となります。0始端ですので1を指定すると、`position`の列が非表示になります。


CC BY-SA 3.0
2015-01-10T11:08:28.417
4372
2015-01-10T11:08:28.417
5337
4364
answer