Как сгенерировать новое действие по щелчку мыши

#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 для открытия нового действия. При его реализации вам нужно будет передать свой интерфейс и просто передать любой параметр, который вам там нужен.

Может быть сложным, но здесь это лучшее решение.