Есть ли способ передать значения с помощью намерений от одного адаптера к другому в Android? - PullRequest
0 голосов
/ 29 ноября 2018

В моем классе 2 адаптера, и я пытаюсь передать значения из одного адаптера в другой.Мне трудно это делать.Это код моего первого адаптера, куда я пытаюсь отправить значения из:

public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {

    final ViewHolder myViewHolder = (ViewHolder)viewHolder;
    final Department_model model = models_list.get(i);
    myViewHolder.department_text.setText(model.getDepartment_Name());
    myViewHolder.relative_lay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, Categories.class);
            intent.putExtra("category_name", models_list.get(i).Category_Name);
            context.startActivity(intent);
        }
    });
}

Второй адаптер:

public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {

    String name = "";
    Intent intent = getIntent();
    name = intent.getStringExtra("category_name");


    final ViewHolder myViewHolder = (ViewHolder)viewHolder;
    final Department_model model = models_list.get(i);
    myViewHolder.category_textview.setText(name);
}

Линия Intent intent = getIntent(); не работает такМне было интересно, есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Поскольку у вас есть оба адаптера в одном действии, вы можете получить выбранное значение в действии, и перед загрузкой нового адаптера вы передаете индекс или значение второго адаптера в качестве параметра.

0 голосов
/ 29 ноября 2018

Я предполагаю, что вы используете второй адаптер во втором действии.Если это так, то вы можете выполнить следующие шаги

1) Так как в первом адаптере вы передаете значение через намерение, это совершенно нормально.Но когда вы запускаете второе действие, вам нужно получить значения из намерения в методе onCreate второго действия.Так как вы используете приведенный ниже код, с которым все в порядке. Но вам нужно указать код ниже в методе второго действия, как указано ниже

String name = "";
Intent intent = getIntent();
name = intent.getStringExtra("category_name");

Теперь вы получили доступ к названию категории в переменной "name".".

2) Теперь вы можете передать эту переменную name в адаптер через конструктор или через метод установки адаптера.

3) Теперь у вас есть доступзначение переменной name и теперь вы можете использовать его соответственно в своем адаптере, где вы хотите.

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

...