正在尝试从适配器中的onClick事件中打开活动



我正在尝试学习如何从适配器内的单击事件打开活动。

现在,多亏了jogarcia,我可以点击卡片视图项目并向吐司发送文本视图内容,但我似乎不知道如何打开新活动并通过putExtra((传递文本视图内容

这是我的适配器代码:。。。

public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
final ListItem ListItem = ListItems.get(position);
holder.ConfinedSpaceID.setText(ListItem.getSpaceId());
holder.ConfinedSpaceDescription.setText(ListItem.getDescription());
//the following is added to create an onclick listener for the cardview
holder.cardview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String string;
string = ListItem.getSpaceId().toString();
Toast.makeText(context, "You clicked "+string, Toast.LENGTH_LONG).show();
}
});
}

我希望能够打开一个名为DisplayIndividual.class的新活动,并将"string"作为putExtra((传递。如有任何帮助,将不胜感激

您可以将上下文从活动类传递到类似的适配器

AdapterClass obj = new AdapterClass(this);

适配器类

Context context; //global
public AdapterClass(Context context)
{
this.context = context;  
}

然后你可以使用Intent现在

@Override
public void onClick(View v) {
String string;
string = ListItem.getSpaceId().toString();
Toast.makeText(context, "You clicked "+string, Toast.LENGTH_LONG).show();
Intent intent = new Intent(context,...)
}
});

将一个作为您的id的int放入新的Intent中。

final Intent intent = new Intent(
FirstActivity.this, SecondActivity.class);
final Bundle b = new Bundle();
b.putString("key", "value");
intent.putExtras(b);
startActivity(intent);

这基本上是安卓系统中的一个问题。我们通常通过Intent将数据从一个活动传递到另一个活动。

让我们对您的代码片段进行一些更改:

public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
final ListItem ListItem = ListItems.get(position);
holder.ConfinedSpaceID.setText(ListItem.getSpaceId());
holder.ConfinedSpaceDescription.setText(ListItem.getDescription());
//the following is added to create an onclick listener for the cardview
holder.cardview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String string;
string = ListItem.getSpaceId().toString();
Toast.makeText(context, "You clicked "+string, Toast.LENGTH_LONG).show();
// code here, context usually is which activity you set this adapter from
Intent intent = new Intent(context, DisplayIndi​​vidual.class);
intent.putExtra("stringKey", string);
startActivity(intent);
}
});
}

DisplayIndi​​vidual:中

您可以从Intent 获取字符串数据

String string getIntent().getStringExtra("stringKey");

在onClick方法中:

Intent intent = new Intent(context,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

并且在片段中传递上下文:

adapter = new Adapter(list , this.getApplicationContext());
recyclerView.setAdapter(adapter);

非常感谢大家的投入。太棒了。以下内容对我来说非常有效:(我没有阅读/学习到足够的内容来理解getContext((

Intent myIntent = new Intent(v.getContext(),DisplayIndividual.class);
myIntent.putExtra("STRING_2_Search", string);
v.getContext().startActivity(myIntent);

最新更新