Я работаю над приложением, которое позволяет пользователю пройти тест и записать все результаты тестов, на которые можно будет ссылаться позже, если это необходимо. Я строю фрагмент, который позволяет пользователю просматривать эту запись в TableLayout. Мне нужно динамически добавлять строки, поэтому я пытаюсь создать способ добавления строк во время метода onCreateView фрагмента. Однако эти строки никогда не отображаются в приложении, несмотря на то, что они отображаются как дочерние элементы таблицы в отладчике. Я пытался отсоединить, а затем снова прикрепить фрагмент, но это никогда не помогает. Я был бы очень признателен за возможность выяснить это.
Это фрагмент:
public class GalleryFragment extends Fragment {
private GalleryViewModel galleryViewModel;
public void addEntryToTable(TableLayout table, String user, String date, String score) {
QuizHistoryTableRow row = new QuizHistoryTableRow(getContext(), user, date, score);
table.addView(row);
}
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_gallery, container, false);
TableLayout table = root.findViewById(R.id.quiz_history_table);
addEntryToTable(table, "user", "date", "score");
return root;
}
}
А вот строка пользовательской таблицы:
public class QuizHistoryTableRow extends TableRow {
public QuizHistoryTableRow(Context context, String user, String date, String score){
super(context);
TextView userView = new TextView(context);
userView.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
userView.setText(user);
userView.setTextColor(0);
userView.setTextSize(22);
TextView dateView = new TextView(context);
dateView.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
dateView.setText(date);
dateView.setTextColor(0);
dateView.setTextSize(22);
TextView scoreView = new TextView(context);
scoreView.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
scoreView.setText(score);
scoreView.setTextColor(0);
scoreView.setTextSize(22);
addView(userView);
addView(dateView);
addView(scoreView);
}
}