2012-01-10 22 views
2

私はEclipse + Android SDKを使用しています。データ行を動的に追加する

私はセンサによって提供されるデータを持つテーブルを作成しようとしています。私は情報を正しく取得しています。私はXMLでdinamicallyを表示するためのテーブルを作るのに問題があります。

これはsensorinfo.XMLです:

<?xml version="1.0" encoding="utf-8"?> 

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:stretchColumns="1" 
android:id="@+id/SensorInfoTableLayout"> 


<TableRow> 

    <TextView 
      android:layout_column="1" 
      android:text="@string/sensor_name_title" 
      android:padding="3dip" /> 

    <TextView 
      android:layout_column="2" 
      android:text="@string/sensor_type_title" 
      android:padding="3dip" /> 
    <TextView 
      android:layout_column="3" 
      android:text="@string/sensor_value_title" 
      android:padding="3dip" /> 
    <TextView 
      android:layout_column="4" 
      android:text="@string/sensor_unit_title" 
      android:padding="3dip" /> 
</TableRow> 

    <View 
    android:layout_height="4dip" 
    android:background="#FF909090" /> 

</TableLayout> 

そして、これは私の活動のコードです:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    getSensorInfo(); 
    setContentView(R.layout.sensorinfo); 

    setInfoByView(); 

} 

そして

private void setInfoByView() 
{ 
    /* Find Tablelayout defined in xml */ 
    TableLayout myTableLayout = (TableLayout)findViewById(R.id.SensorInfoTableLayout); 
    /* Create a new row to be added. */ 
    TableRow myTableRow = new TableRow(this); 
    myTableRow.setLayoutParams(new LayoutParams(
         LayoutParams.WRAP_CONTENT, 
         LayoutParams.WRAP_CONTENT)); 
    /* Create a Button to be the row-content. */ 
    Button b = new Button(this); 
    b.setText("Dynamic Button"); 
    b.setLayoutParams(new LayoutParams(
         LayoutParams.WRAP_CONTENT, 
         LayoutParams.WRAP_CONTENT)); 
    myTableRow.setBackgroundColor(5); 
    /* Add Button to row. */ 
    myTableRow.addView(b); 
    /* Add row to TableLayout. */ 
    myTableLayout.addView(myTableRow,new TableLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
} 

これはテストです、私は私はgetSensorInfo()から取得した情報を入れます。

しかし、私の活動は次のようになります。私は間違って何をしていることができ

ACTIVITY IMAGE

私が見つけたすべての情報はTHISでしたが、回答が私を助けませんでした。

答えて

4

まず第一に、このようなあなたのXMLファイルに1つの表のレイアウトを作成する:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#BFD6E8"> 

<ScrollView android:id="@+id/image_scroll" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <TableLayout android:id="@+id/image_table" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
    </TableLayout> 

</ScrollView> 

</LinearLayout> 

そして表レイアウトの内部に動的な行を作成するためにこのコードを使用:

  TableLayout image_table=null; 
     image_table=(TableLayout)findViewById(R.id.image_table); 

     for(int i=0; i<10; i++){ 
      TableRow tableRow=new TableRow(this); 
      tableRow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
      tableRow.setGravity(Gravity.CENTER_HORIZONTAL); 
      tableRow.setPadding(5, 5, 5, 5); 
      for(int j=0; j<1; j++){ 
       Button bttn=new Button(this); 
       bttn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
       bttn.setText(Hello); 
       tableRow.addView(image, 200, 200); 
      } 
      image_table.addView(tableRow); 
     } 

FINAL(試験)溶液:

private void setInfoByView2() 
{ 
    TableLayout myTableLayout = null; 
    TableRow myTableRow = new TableRow(this); 
    myTableLayout = (TableLayout)findViewById(R.id.SensorInfoTableLayout); 

    myTableRow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    //myTableRow.setGravity(Gravity.CENTER_HORIZONTAL); 
    myTableRow.setPadding(5, 5, 5, 5); 
    Button bttn = new Button(this); 
    bttn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    bttn.setText("Hello"); 
    myTableRow.addView(bttn, 200, 200); 
    myTableLayout.addView(myTableRow); 
} 

ボタンが表示されます。

+0

コードを修正していただきありがとうございます。 – vgonisanz

+0

@Piperomanいつも歓迎です。楽しんでください! – Venky

関連する問題