Я искал везде, но, похоже, не могу найти то, что ищу. У меня есть действие с несколькими кнопками, каждая кнопка открывает новое действие с идентичным макетом recyclerview, но с разными данными. Мне интересно, можно ли использовать одно действие и макет вместо нескольких? таким образом, вместо того, чтобы иметь 10+ действий (по одному для каждой кнопки), мне нужно управлять только одним при нажатии кнопки и просто передавать ему необходимые данные списка.
Я считаю, что вы могли бы установить намерения для каждой кнопки для вызова одного и того же действия, но с целым числом, например 1-10, в действии он принимает значение и решает, какой список должен быть представлен? Если кто-то подумает, как это можно сделать, или о более простом способе, я был бы очень признателен!
Да, это можно сделать разными способами.
layout1, layout2, layout3, последовательно одна за другой. Итак, если изначально layout1 виден, а остальные пропали с помощью layout.setVisiblity(View.GONE), если вы нажмете button1, ypu может сделать layout1.setVisiblity(View.GONE); layout3.setVisiblity(View.GONE); layout2.setVisiblity(View.VISIBLE) и наоборот для нажатия button2.Все ли активности, открываемые кнопками, похожи? Если это так, вы можете позаботиться только об изменениях в элементах макета и указать условия.
Например, если вы нажмете кнопку, вместо того, чтобы изменить все это, вы только войдете в кнопки и измените их текст с помощью btn.setText("..."). Вы можете определить различные условные операторы внутри onClickListener этой кнопки.
Это могло быть что-то вроде:
if (btn.getText().equals("a certain text that you set to the button")){
doSomething();
else if (btn.getText().equals("another option")){
doSomethingElse();
Следуя этой логике, вы можете постоянно обновлять элементы в вашем макете, и ваш код будет решать, что делать, в зависимости от того, что хранится в этих элементах.
Второй вариант, который приходит мне в голову, - это создание разных файлов макета xml и простое изменение макета вашего MainActivity на подходящий, в зависимости от того, на каком этапе вашего процесса вы находитесь.
Надеюсь, это поможет,
Почему бы вам просто не обновить текущий RecyclerView? Просто сбросьте содержимое и добавьте новое.