Я изо всех сил пытаюсь найти хороший способ добавления и удаления нажимаемых кнопок в TableLayout.
Итак, в настоящее время у меня есть HashMap, который содержит целое число и объект. Он обновляется по мере необходимости. Когда пользователь нажимает кнопку «Добавить проект», я хотел бы, чтобы он прошел через процесс добавления проекта в HashMap, а затем обновил мой TableLayout.
Я бы хотел ограничить каждую строку двумя кнопками. Я заметил, что прежде чем я смогу обновить TableLayout (или любой макет), добавив новый проект, я должен удалить предыдущую итерацию.
Я пробовал множество разных способов добавлять и удалять кнопки подряд, но ни один из них, похоже, не сработал.
One example of what I did is:
int i = mProjectMap.size();
for(Map.Entry<Integer, Counter> entry : mProjectMap.entrySet()) { // This already has one entry before reaching this loop
if(i % 2 == 0 || mLayoutProjects.getChildCount() == 0) {
mTableRow = new TableRow(mMainContext);
mLayoutProjects.addView(mTableRow);
}
mTableRow.addView(entry.getValue());
};
As for removing the views I've tried:
mLayoutProjects.removeAllViews();
and:
mLayoutProjects.removeViewsInLayout();
And many more.
Что должно произойти так:
1) Пользователь нажимает кнопку «Добавить проект».
2) Проект наполнен актуальной информацией. (сделанный)
3) Проект добавлен в mProjectMap (готово)
4) В mLayoutProjects удалены все содержащие представления.
5) если mLayoutProjects.getChildCount () равно 0 ИЛИ i% 2 равно 0, то: Создайте новую строку и добавьте ее в mLayoutProjects.
6) Добавьте кнопку проекта в строку.
Вместо этого, когда я нажимаю кнопку «Добавить проект», этот цикл кажется , чтобы добавить все на первой итерации, но на экране ничего не отображается в виде кнопок (у меня есть счетчик проектов, который увеличивается один раз). Затем я снова нажимаю кнопку, и приложение вылетает.