Android Studio Одно действие, действующее как многие

Я искал везде, но, похоже, не могу найти то, что ищу. У меня есть действие с несколькими кнопками, каждая кнопка открывает новое действие с идентичным макетом recyclerview, но с разными данными. Мне интересно, можно ли использовать одно действие и макет вместо нескольких? таким образом, вместо того, чтобы иметь 10+ действий (по одному для каждой кнопки), мне нужно управлять только одним при нажатии кнопки и просто передавать ему необходимые данные списка.

Я считаю, что вы могли бы установить намерения для каждой кнопки для вызова одного и того же действия, но с целым числом, например 1-10, в действии он принимает значение и решает, какой список должен быть представлен? Если кто-то подумает, как это можно сделать, или о более простом способе, я был бы очень признателен!

Почему бы вам просто не обновить текущий RecyclerView? Просто сбросьте содержимое и добавьте новое.

Sagar 11.07.2018 05:26
1
1
60
2

Ответы 2

Да, это можно сделать разными способами.

  1. Вы можете использовать несколько фрагментов для одного и того же действия. Затем добавляйте / удаляйте фрагменты при каждом нажатии кнопки.
  2. В вашей деятельности может быть несколько макетов. Допустим, у вас есть две кнопки и три раскладки 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 на подходящий, в зависимости от того, на каком этапе вашего процесса вы находитесь.

Надеюсь, это поможет,

Другие вопросы по теме