9
Sono nuovo per Android e sto cercando di aggiungere un TableRow, che ho già creato con xml, a un TableLayout a livello di programmazione. Sto ottenendo Chiusura forzata, la maggior parte sono NullPointerExcpetions.Come aggiungere TableRow da xml a TableLayout a livello di programmazione?
Ecco la mia classe 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;
}
}
Questo è il mio layout con la 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>
E il 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>
ho provato un sacco di modi diversi per realizzarla ma ancora niente.
SI! Grazie mille per aver risolto il mio problema. Puoi dirmi anche come aggiungere la stessa vista più di una volta per favore? Il bambino ha già un genitore quindi non posso aggiungerlo di più semplicemente mettendo tl.addView (tr); – Chris95X8
ripeti il codice all'interno per ciclo. ma tieni presente che hai creato l'array di visualizzazione prima di ripetere il ciclo for. quindi per ogni vista dell'array gonfiare il table_row_layout e aggiungerlo al layout tabella. – TNR
ho appena fatto come questo e ha funzionato for (int i = 0; i <7; i ++) { \t \t \t \t \t View TR = inflater.inflate (R.layout.subject_row, null, false) ; \t \t tl.addView (tr); \t \t \t \t} – Chris95X8