I'm trying to build a table in android dynamically. But when I attempt to inflate a view, for instance, table_cell.xml, and add it to my table row, nothing appears:
TableLayout tableLayout = (TableLayout)rootView.findViewById(R.id.tableLayout);
View tableCell = getActivity().getLayoutInflater()
.inflate(R.layout.table_cell, container, false);
TableRow tableRow = new TableRow(getActivity());
tableRow.addView(tableCell);
tableLayout.addView(tableRow);
On the other hand, if I just create a TextView manually, then add it to the row, it seems to work fine. Can anyone help me figure out why adding an inflated layout doesn't work?
You should try with
getActivity().getLayoutInflater() .inflate(R.layout.table_cell, tableRow, true);
And you should not add the tableCell
view on the tableRow
manually in this case as the inflator method takes care of that since we pass true ..
Try This
You have to provide id for positioning.
TableLayout tableLayout = (TableLayout)rootView.findViewById(R.id.tableLayout);
View tableCell = getActivity().getLayoutInflater()
.inflate(R.layout.table_cell, container, false);
TableRow tableRow = new TableRow(getActivity());
tableRow.addView(tableCell);
tableLayout.addView(tableRow,id);
or
TableLayout tableLayout = (TableLayout)rootView.findViewById(R.id.tableLayout);
View tableCell = getActivity().getLayoutInflater()
.inflate(R.layout.table_cell, container, false);
TableRow tableRow = new TableRow(getActivity());
TableRow.LayoutParams LP = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
tableRow.setLayoutParams(LP);
tablerow.setId(ID);
tableRow.addView(tableCell);
tableLayout.addView(tableRow);
or
TableLayout tableLayout = (TableLayout)rootView.findViewById(R.id.tableLayout);
View tableCell = getActivity().getLayoutInflater()
.inflate(R.layout.table_cell, container, false);
TableRow tableRow = new TableRow(getActivity());
tableRow.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
tablerow.setId(ID);
tableRow.addView(tableCell);
tableLayout.addView(tableRow, new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));