在Android中,是否可以使用意图将值从一个适配器传递到另一个适配器?

时间:2018-11-29 06:59:22

标签: android android-intent android-adapter

我的课堂上有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 :(得分:0)

我假设您正在第二个活动中使用第二个适配器。如果是这种情况,则可以执行以下步骤

1)就像在第一个适配器中一样,您正在通过意图传递值,这完全可以。但是,当您开始第二个活动时,您需要从第二个活动的onCreate方法中的意图中获取值。当您使用下面的代码完全没问题时,但是您需要在下面提到的第二个活动的oncreate方法中的代码下面

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

现在,您已经在变量“名称”中访问了类别名称

2)现在,您可以通过构造函数或适配器的setter方法在适配器中传递此变量 name

3)现在,您可以访问变量 name 的值,并且现在可以在任意位置的适配器中相应地使用它。

希望它会对您有所帮助。

答案 1 :(得分:0)

由于两个适配器都在同一个Activity中,所以您可以在活动中获取选定的值,并在加载新适配器之前,将第二个适配器中的索引或值作为参数传递。