Android 如何使用单击侦听器打开具有“循环视图”项目的不同活动

Android 如何使用单击侦听器打开具有“循环视图”项目的不同活动,android,android-recyclerview,onclick,onclicklistener,Android,Android Recyclerview,Onclick,Onclicklistener,如何打开不同的活动与循环查看项目使用点击侦听器。帮助我,我是初学者。 我的代码是 主要活动: 在adapterdatalist中发送活动名称。在OnClickListener中,通过调用startMyActivity方法启动活动,如下所示: holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

如何打开不同的活动与循环查看项目使用点击侦听器。帮助我,我是初学者。 我的代码是

主要活动:


在adapterdatalist中发送活动名称。在OnClickListener中,通过调用startMyActivity方法启动活动,如下所示:

holder.itemView.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
              startMyActivity(dataSet.get(listPosition));
       }
                    });
这里是我的活动名称列表。下面是按名称调用活动的代码

 private void startMyActivity(String ActivityName){
        String activityToStart = ActivityName;
        try {
            Class<?> c = Class.forName(activityToStart);
            Intent intent = new Intent(mContext, c);
            mContext.startActivity(intent);
        } catch (ClassNotFoundException ignored) {
            Log.e("no activity","Activity not found");
        }
    }
private void startMyActivity(字符串ActivityName){
字符串activityToStart=ActivityName;
试一试{
c类=Class.forName(activityToStart);
意图=新意图(mContext,c);
mContext.startActivity(意图);
}捕获(忽略ClassNotFoundException){
Log.e(“无活动”、“未找到活动”);
}
}

在视图中实现一个接口(活动/片段),并将其传递给RecyclerView构造函数。然后在ViewsOnClick事件上,只需调用接口的方法并处理活动或片段中的单击

例如-

public YourAdapter( ArrayList<RESULT> list, IRecyclerItemClickListener listener) {
    this.list = list;
    this.listener = listener;
}
在实现的活动或片段中

@Override
public void onViewClicked(View view,int position) {

    switch(view.getId()){
     case R.id.yourview:startActivity(new Intent(this,ActivityB.class))
 }
}
解决方案

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<String> countries;

public DataAdapter(ArrayList<String> countries) {
    this.countries = countries;
}

@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardlay, viewGroup, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, final int i) {

    viewHolder.tv_country.setText(countries.get(i));
    viewHolder.tv_country.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Context context = v.getContext();
            if(countries.get(i).equalsIgnoreCase("India")){
                Intent intent= new Intent(context, First.class);
                context.startActivity(intent);
            }

            else if(countries.get(i).equalsIgnoreCase("Germany")){
                Intent intent= new Intent(context, Second.class);
                context.startActivity(intent);
            }
        }
    });
}

@Override
public int getItemCount() {
    return countries.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    private TextView tv_country;
    public ViewHolder(View view) {
        super(view);

        tv_country = (TextView)view.findViewById(R.id.tv_country);
    }
}
公共类DataAdapter扩展了RecyclerView.Adapter{
私营ArrayList国家;
公共数据适配器(ArrayList国家/地区){
这个国家=国家;
}
@凌驾
public DataAdapter.ViewHolder onCreateViewHolder(视图组视图组,int i){
View View=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.cardlay,viewGroup,false);
返回新的ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(DataAdapter.ViewHolder-ViewHolder,final int i){
viewHolder.tv_country.setText(countries.get(i));
viewHolder.tv\u country.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Context=v.getContext();
if(国家get(i)同等信号情况(“印度”)){
意图=新意图(上下文,第一类);
背景。开始触觉(意图);
}
else if(countries.get(i).equalsIgnoreCase(“德国”)){
意图=新意图(上下文,第二类);
背景。开始触觉(意图);
}
}
});
}
@凌驾
public int getItemCount(){
返回国。大小();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
国家/地区的私人文本视图电视;
公共视图持有者(视图){
超级(视图);
tv_country=(TextView)view.findviewbyd(R.id.tv_country);
}
}

}

它已经给出了答案:可能是重复的感谢,但它不会去其他活动。显示错误:尝试调用空对象上的虚拟方法“java.lang.String android.content.Context.getPackageName()”,引用我的代码以获取intent=new intent(Context,First.class);背景。开始触觉(意图);“我很乐意帮助你。
@Override
public void onViewClicked(View view,int position) {

    switch(view.getId()){
     case R.id.yourview:startActivity(new Intent(this,ActivityB.class))
 }
}
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<String> countries;

public DataAdapter(ArrayList<String> countries) {
    this.countries = countries;
}

@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardlay, viewGroup, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, final int i) {

    viewHolder.tv_country.setText(countries.get(i));
    viewHolder.tv_country.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Context context = v.getContext();
            if(countries.get(i).equalsIgnoreCase("India")){
                Intent intent= new Intent(context, First.class);
                context.startActivity(intent);
            }

            else if(countries.get(i).equalsIgnoreCase("Germany")){
                Intent intent= new Intent(context, Second.class);
                context.startActivity(intent);
            }
        }
    });
}

@Override
public int getItemCount() {
    return countries.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    private TextView tv_country;
    public ViewHolder(View view) {
        super(view);

        tv_country = (TextView)view.findViewById(R.id.tv_country);
    }
}