我的课堂上有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();
行不起作用,所以我想知道是否有办法吗?
答案 0 :(得分:0)
我假设您正在第二个活动中使用第二个适配器。如果是这种情况,则可以执行以下步骤
1)就像在第一个适配器中一样,您正在通过意图传递值,这完全可以。但是,当您开始第二个活动时,您需要从第二个活动的onCreate方法中的意图中获取值。当您使用下面的代码完全没问题时,但是您需要在下面提到的第二个活动的oncreate方法中的代码下面
String name = "";
Intent intent = getIntent();
name = intent.getStringExtra("category_name");
现在,您已经在变量“名称”中访问了类别名称。
2)现在,您可以通过构造函数或适配器的setter方法在适配器中传递此变量 name 。
3)现在,您可以访问变量 name 的值,并且现在可以在任意位置的适配器中相应地使用它。
希望它会对您有所帮助。
答案 1 :(得分:0)
由于两个适配器都在同一个Activity中,所以您可以在活动中获取选定的值,并在加载新适配器之前,将第二个适配器中的索引或值作为参数传递。