2013-01-03 21 views
9

Im mới cho Android và tôi đang cố gắng thêm một TableRow, mà tôi đã thực hiện với xml, một TableLayout lập trình. Tôi nhận được Force Đóng, hầu hết là NullPointerExcpetions.Làm thế nào để thêm TableRow từ xml sang TableLayout theo lập trình?

Dưới đây là tôi lớp 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; 
} 
} 

Đây là bố cục của mình với 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> 

và các 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> 

tôi đã cố gắng rất nhiều cách khác nhau để đạt được nó nhưng vẫn không có gì.

Trả lời

9

Thay thế mã:

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

với

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

YES! Cảm ơn bạn rất nhiều vì đã giải quyết được vấn đề của tôi. Bạn cũng có thể cho tôi biết cách thêm cùng một chế độ xem nhiều hơn một lần không? Đứa trẻ đã có một phụ huynh vì vậy tôi không thể thêm nó nhiều hơn bằng cách chỉ cần đặt tl.addView (tr); – Chris95X8

+0

lặp lại mã bên trong cho vòng lặp. nhưng hãy nhớ rằng bạn đã tạo mảng xem trước khi lặp lại trong vòng lặp. sau đó cho mỗi khung nhìn trong mảng làm tăng table_row_layout và thêm nó vào bảng Layout. – TNR

+0

tôi chỉ làm nó như thế này và nó làm việc for (int i = 0; i <7; i ++) { \t \t \t \t \t Xem tr = inflater.inflate (R.layout.subject_row, null, false) ; \t \t tl.addView (tr); \t \t \t \t} – Chris95X8

Các vấn đề liên quan