android のテーブルレイアウトの動的作成。
androidアプリで、TableRowを動的に作成しようと思い、次のコードを書いたのですが、何故かpositionの列だけ表示されません。
//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);
}
以下はレイアウトXMLです。
//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>
以下がgetPosition()
です。
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";
}
このメソッドはPlayer
というクラスのメソッドです。 Player
はActivityを継承していません。