2013-01-03 88 views
9

即時通訊新的Android和我想添加一個TableRow,我已經用xml,以編程方式添加到TableLayout。我得到部隊關閉,大部分都是空指導練習。如何以編程方式將TableRow從xml添加到TableLayout?

這是我的java類

public class DayFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.subjects_list, container, false); 


    TableLayout tl = (TableLayout) view.findViewById(R.id.tl); 
    TableRow tr = (TableRow) view.findViewById(R.id.tr_row); 

      tl.addView(tr); //not working, obviously im missing something 

    //xml parsing stuff 

      return view; 
} 
} 

這是我的佈局與TableLayout:

<?xml version="1.0" encoding="utf-8"?> 
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/horizontalScrollView1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:paddingTop="5dp" > 

<ScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:fillViewport="true" 
    android:orientation="vertical" > 

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

     <include 
      android:id="@+id/header" 
      layout="@layout/table_header" /> 

     <include android:id="@+id/h_divider" 
      layout="@layout/horizontal_divider"/> 




    </TableLayout> 
</ScrollView> 

</HorizontalScrollView> 

而且的TableRow:

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tr_row" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" > 

<TextView 
    android:id="@+id/tv_hour" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:padding="8dp" 
    android:textSize="15sp" 
    android:textStyle="bold" /> 

<View 
    android:layout_weight="1" 
    android:background="@drawable/vertical_cell_divider" /> 

<TextView 
    android:id="@+id/tv_subject" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:padding="8dp" 
    android:textSize="18sp" /> 

<View 
    android:layout_weight="1" 
    android:background="@drawable/vertical_cell_divider" /> 

<TextView 
    android:id="@+id/tv_start" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:padding="8dp" 
    android:textSize="18sp" /> 

<TextView 
    android:id="@+id/tv_bar" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:textSize="18sp" /> 

<TextView 
    android:id="@+id/tv_end" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:padding="8dp" 
    android:textSize="18sp" /> 

</TableRow> 

我試過很多不同的方式來實現它但仍然沒有。

回答

9

替換代碼:

TableRow tr = (TableRow) view.findViewById(R.id.tr_row); 
tl.addView(tr); //not working, obviously im missing something 

View tr = inflater.inflate(R.layout.table_row_layout, null,false); 
tl.addView(tr); //not working, obviously im missing something 
+0

YES!非常感謝您解決我的問題。你能否告訴我如何多次添加相同的視圖?孩子已經有一個父母,所以我不能通過添加tl.addView(tr)來添加它。 – Chris95X8

+0

重複循環內部的代碼。但請記住,您已經在for循環中重複之前創建了視圖數組。然後爲數組中的每個視圖充氣table_row_layout並將其添加到表格佈局。 – TNR

+0

我只是做它像這樣,它的工作 對(INT I = 0; I <7;我++){ \t \t \t \t 查看\t TR = inflater.inflate(R.layout.subject_row,NULL,假) ; \t \t tl.addView(tr); \t \t \t \t} – Chris95X8

相關問題