在 Android 中,有没有一种方法可以使用意图将值从一个适配器传递到另一个适配器?
Is there a way to pass values using intents from one adapter to another in Android?
我的 class 中有 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();
不起作用,所以我想知道是否有办法做到这一点?
我假设您在第二个 activity 中使用第二个适配器。如果是这种情况,那么您可以执行以下步骤
1) 与在第一个适配器中一样,您通过意图传递价值,这完全没问题。但是当你启动第二个 activity 时,你需要从第二个 activity 的 onCreate 方法中的 intent 获取值。当您使用下面的代码是完美的 alright.But 时,您需要在第二个 activity 的 oncreate 方法中使用下面的代码,如下所述
String name = "";
Intent intent = getIntent();
name = intent.getStringExtra("category_name");
现在您已经访问了变量 "name" 中的 类别名称。
2) 现在您可以通过构造函数或适配器的 setter 方法在适配器中传递此变量 name。
3) 现在您可以访问变量 name 的值,现在您可以在您的适配器中相应地使用它。
希望对您有所帮助。
因为你在同一个 Activity 中有两个适配器,你可以做的是在 activity 中获取选定的值,并在加载新适配器之前传递第二个的索引或值适配器作为参数。
我的 class 中有 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();
不起作用,所以我想知道是否有办法做到这一点?
我假设您在第二个 activity 中使用第二个适配器。如果是这种情况,那么您可以执行以下步骤
1) 与在第一个适配器中一样,您通过意图传递价值,这完全没问题。但是当你启动第二个 activity 时,你需要从第二个 activity 的 onCreate 方法中的 intent 获取值。当您使用下面的代码是完美的 alright.But 时,您需要在第二个 activity 的 oncreate 方法中使用下面的代码,如下所述
String name = "";
Intent intent = getIntent();
name = intent.getStringExtra("category_name");
现在您已经访问了变量 "name" 中的 类别名称。
2) 现在您可以通过构造函数或适配器的 setter 方法在适配器中传递此变量 name。
3) 现在您可以访问变量 name 的值,现在您可以在您的适配器中相应地使用它。
希望对您有所帮助。
因为你在同一个 Activity 中有两个适配器,你可以做的是在 activity 中获取选定的值,并在加载新适配器之前传递第二个的索引或值适配器作为参数。