#java #android #android-activity
#java #Android #android-activity
Вопрос:
Я довольно новичок в Android studio и, похоже, не могу найти, с чего начать свою проблему. У меня есть представление Recycler, которое работает нормально, и у меня есть функция щелчка по отдельным карточкам, которая работает нормально. Однако у меня проблема; возможно ли сгенерировать совершенно новое действие для каждого элемента в представлении recycler? Размер представления recycler всегда будет меняться. Действие, к которому приведет нажатие на карточку, будет тем же шаблоном, только с другой информацией. Итак, по мере удаления одной карточки будет удаляться и действие, с которым она связана, а по мере создания одной с помощью кнопки к ней будет привязан пустой шаблон, ожидающий ввода пользователем информации. Таким образом, могут быть десятки таких действий, все те же, просто с разной информацией. Любая информация, касающаяся этого, была бы признательна.
редактировать: я знаю, как использовать intents, моя проблема не в навигации между действиями, а в создании нового действия после добавления новой карточки в представлении recycler, которая является шаблоном предварительно разработанного действия, связанного с вновь созданным представлением карточки. Сгенерированные действия должны были бы быть независимыми друг от друга с различной введенной пользователем информацией, добавленной в тексты редактирования. Я просто не знаю, как автоматически создавать новую версию действия для каждой созданной карточки.
Ответ №1:
Я думаю, что вы ожидаете запуска нового действия в зависимости от элемента, который пользователь нажимает на RecyclerView. Вы можете добиться этого, передав дополнительное значение Intent второму действию и изменив содержимое второго действия, прочитав дополнительное значение intent.
// Start with Intent extra in FirstActivity
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("DATA", clickedIndex);
startActivity(intent);
Во втором действии OnCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
// Get the Intent that started this activity and extract the clickedIndex
Intent intent = getIntent();
int index = intent.getIntExtra("DATA",-1);
if(index != -1){
//TODO do your value changes in the layout
}
}
Ответ №2:
Создайте интерфейс в своем адаптере
public interface onItemClickListener{
void onAcitivityCreated();
}
создайте экземпляр в своем интерфейсе, например
private onItemClickListener onitemClickListener;
затем передайте его в качестве параметра в вашем конструкторе в adapter
в вашем действии при создании объекта адаптера вам нужно будет передать (this), а также реализовать интерфейс в вашем действии, например: MyActivity реализует OnItemClickListener и реализует все методы, и здесь вы можете записать всю вашу реализацию метода, поэтому вам не придется делать это в вашем адаптере.
Наконец-то вы можете создать статический метод в своих действиях, а затем вы можете легко использовать его для открытия нового действия.
public static void open(@NonNull Context context) {
context.startActivity(new Intent(context, YourActivity.class));
}
Главное, когда у вас есть свой элемент, cardview и т.д. В адаптере. Вы реализуете onclick для открытия нового действия. При его реализации вам нужно будет передать свой интерфейс и просто передать любой параметр, который вам там нужен.
Может быть сложным, но здесь это лучшее решение.