9
Jestem nowy na Androida i próbuję programowo dodać TableRow, który już zrobiłem z xml, do TableLayout. Otrzymuję Force Closes, większość to NullPointerExcpetions.Jak programowo wstawić TableRow z xml do TableLayout?
Oto moja klasa 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;
}
}
To mój układ z 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>
A 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>
Próbowałem wiele różnych sposobów, aby to osiągnąć ale wciąż nic.
TAK! Dziękuję bardzo za rozwiązanie mojego problemu. Czy możesz mi również powiedzieć, jak dodać ten sam widok więcej niż raz? Dziecko ma już rodzica, więc nie mogę dodać go więcej po prostu umieszczając tl.addView (tr); – Chris95X8
powtórz kod wewnątrz pętli. ale pamiętaj, że masz utworzoną tablicę widoków przed powtórzeniem w pętli for. następnie dla każdego widoku w tablicy nadmuchaj table_row_layout i dodaj go do Table Layout. – TNR
Właśnie zrobiłem to w ten sposób i to działało for (int i = 0; i <7; i ++) { \t \t \t \t \t Zobacz tr = inflater.inflate (R.layout.subject_row, null, false) ; \t \t tl.addView (tr); \t \t \t \t} – Chris95X8