Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中为每个CardView打开不同的活动?_Android_Listview - Fatal编程技术网

如何在android中为每个CardView打开不同的活动?

如何在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

我试图在CardView中为不同的卡打开不同的活动,但我只能为所有卡打开相同的活动。 我在下面附上我的RVAdapter代码。请帮忙

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构造函数设置单击侦听器。