如何在android中为每个CardView打开不同的活动?
我试图在CardView中为不同的卡打开不同的活动,但我只能为所有卡打开相同的活动。 我在下面附上我的RVAdapter代码。请帮忙如何在android中为每个CardView打开不同的活动?,android,listview,Android,Listview,我试图在CardView中为不同的卡打开不同的活动,但我只能为所有卡打开相同的活动。 我在下面附上我的RVAdapter代码。请帮忙 public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder>{ List<person> persons; public static class PersonViewHolder extends RecyclerView.ViewHolder
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder>{
List<person> persons;
public static class PersonViewHolder extends RecyclerView.ViewHolder{
CardView cv;
TextView tv1,tv2;
PersonViewHolder(View itemView){
super(itemView);
cv=(CardView)itemView.findViewById(R.id.cv);
tv1=(TextView)itemView.findViewById(R.id.tx1);
tv2=(TextView)itemView.findViewById(R.id.tx2);
cv.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v){
cv.getContext().startActivity(new Intent(cv.getContext(), second.class));
}
});
}
}
RVAdapter(List<person> persons){
this.persons=persons;
}
@Override
public int getItemCount()
{
return persons.size();
}
@Override
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup,int i){
View v= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.activity_scroll_activity,viewGroup,false);
PersonViewHolder pvh=new PersonViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(PersonViewHolder holder, int i) {
holder.tv1.setText(persons.get(i).name);
holder.tv2.setText(persons.get(i).branch);
}
@Override
public void onAttachedToRecyclerView(RecyclerView rcv)
{
super.onAttachedToRecyclerView(rcv);
}
公共类RVAdapter扩展了RecyclerView.Adapter{
列出人员名单;
公共静态类PersonViewHolder扩展了RecyclerView.ViewHolder{
卡德维尤简历;
文本视图tv1、tv2;
PersonViewHolder(查看项目视图){
超级(项目视图);
cv=(cardwiew)itemView.findviewbyd(R.id.cv);
tv1=(TextView)itemView.findViewById(R.id.tx1);
tv2=(TextView)itemView.findViewById(R.id.tx2);
cv.setOnClickListener(new View.OnClickListener(){
@覆盖公共void onClick(视图v){
cv.getContext().startActivity(新意图(cv.getContext(),second.class));
}
});
}
}
RVAdapter(列出人员){
这.人=人;
}
@凌驾
public int getItemCount()
{
返回人。大小();
}
@凌驾
public PersonViewHolder onCreateViewHolder(视图组视图组,int i){
视图v=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.activity\u scroll\u activity,viewGroup,false);
PersonViewHolder pvh=新PersonViewHolder(v);
返回pvh;
}
@凌驾
BindViewHolder上的公共无效(PersonViewHolder,int i){
holder.tv1.setText(persons.get(i).name);
holder.tv2.setText(persons.get(i.branch));
}
@凌驾
附加的ToRecyclerView(RecyclerView rcv)上的公共空间
{
超级链接到循环视图(rcv);
}
}您实际上只设置了一个单击侦听器 您需要在列表中的每个元素上设置一个单击侦听器 在您的
onBindViewHolder
中写下如下内容:
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v){
v.getContext().startActivity(new Intent(v.getContext(), second.class));
}
});
您实际上只设置了一个单击侦听器 您需要在列表中的每个元素上设置一个单击侦听器 在您的
onBindViewHolder
中写下如下内容:
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v){
v.getContext().startActivity(new Intent(v.getContext(), second.class));
}
});
如果我对你的问题的理解是正确的,如果有三种不同的卡片视图,你有三种不同的活动,每个卡片视图都有。为此,您必须使用位置标识卡片视图,然后在
onBindViewHolder
Intent intent;
if(i == 0)
intent = new Intent(context, Class1.class);
else if(i == 1)
intent = new Intent(context, Class2.class);
else
intent = new Intent(context, Class3.class);
holder.itemView.setOnClickListener(new View.OnClickListener(){
@Override public void onClick(View v){
context.startActivity(intent);
}
}
如果我对你的问题的理解是正确的,如果有三种不同的卡片视图,你有三种不同的活动,每个卡片视图都有。为此,您必须使用位置标识卡片视图,然后在
onBindViewHolder
Intent intent;
if(i == 0)
intent = new Intent(context, Class1.class);
else if(i == 1)
intent = new Intent(context, Class2.class);
else
intent = new Intent(context, Class3.class);
holder.itemView.setOnClickListener(new View.OnClickListener(){
@Override public void onClick(View v){
context.startActivity(intent);
}
}
使用OnClick Listener实现onBindViewHolder 下面是一个简单的Toast示例,用于显示选择了哪张卡: (位于BindViewHolder内)
只需修改onClick即可调用您的活动。使用onClick侦听器实现onBindViewHolder 下面是一个简单的Toast示例,用于显示选择了哪张卡: (位于BindViewHolder内)
只需修改onClick即可调用您的活动。另外,在onBindViewHolder中,为CardView而不是ViewHolder构造函数设置单击侦听器。另外,在onBindViewHolder中,为CardView而不是ViewHolder构造函数设置单击侦听器。