Java 如何为嵌入在2个不同cardview中的同名回收器视图使用不同的活动?

Java 如何为嵌入在2个不同cardview中的同名回收器视图使用不同的活动?,java,android,android-recyclerview,cardview,Java,Android,Android Recyclerview,Cardview,我的程序提供了一个包含两个卡片视图的活动,而这两个视图又使用一个回收器视图。这是一个学习应用程序,因此这两个卡片视图用于Java和HTML,它们使用相同的适配器用于recycler视图。Java和HTML都有一个介绍页面,所以我想为Java介绍和HTML介绍打开不同的活动 我尝试在点击回收器视图时区分卡片视图 holder.setItemClickListener(new ItemClickListener() { @Override public

我的程序提供了一个包含两个卡片视图的活动,而这两个视图又使用一个回收器视图。这是一个学习应用程序,因此这两个卡片视图用于Java和HTML,它们使用相同的适配器用于recycler视图。Java和HTML都有一个介绍页面,所以我想为Java介绍和HTML介绍打开不同的活动

我尝试在点击回收器视图时区分卡片视图

holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClickListener(View v, int position) {
                Intent intent;
                switch (v.getId()){
                    case R.id.javacardId :
                        if (models.get(position).getTitle().equals("Introduction")){
                            intent = new Intent(c,anotherActivity.class);
                            c.startActivity(intent);
                        }
                        break;
                    case R.id.htmlcardId :
                        if (models.get(position).getTitle().equals("Introduction")){
                        intent = new Intent(c,html_Introduction.class);
                        c.startActivity(intent);
                    }
                    break;
                }

---java_类用于java CardView启用回收器视图
包com.hfad.dashboard_ui;
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.os.Bundle;
导入java.util.ArrayList;
公共类java_prog扩展了AppCompatActivity{
String name=“java_prog”;
RecyclerView内容列表;
内容适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u java\u prog);
contentList=findViewById(R.id.courseContentList);
setLayoutManager(新的LinearLayoutManager(this));
adapter=newcontentadapter(这个,getList());
setAdapter(适配器);
}
私有ArrayList getList(){
ArrayList models=新的ArrayList();
模型m=新模型();
m、 片名(“导言”);
m、 setImage(R.raw.intro);
增加(m);
m=新型号();
m、 setTitle(“数组”);
m、 setImage(R.raw.array);
增加(m);
m=新型号();
m、 setTitle(“类和对象”);
m、 setImage(R.raw.objects);
增加(m);
m=新型号();
m、 setTitle(“循环”);
m、 setImage(R.raw.loop);
增加(m);
m=新型号();
m、 设定所有权(“例外”);
m、 setImage(R.raw.exception);
增加(m);
收益模型;
}
}
---
---html CardView的html类启用回收器视图
包com.hfad.dashboard_ui;
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.os.Bundle;
导入java.util.ArrayList;
公共类html_prog扩展了AppCompative活动{
RecyclerView内容列表;
内容适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u html\u prog);
contentList=findViewById(R.id.courseContentList);
setLayoutManager(新的LinearLayoutManager(this));
adapter=newcontentadapter(这个,getList());
setAdapter(适配器);
}
私有ArrayList getList(){
ArrayList models=新的ArrayList();
模型m=新模型();
m、 片名(“导言”);
m、 setImage(R.raw.intro);
增加(m);
m=新型号();
m、 setTitle(“数组”);
m、 setImage(R.raw.array);
增加(m);
m=新型号();
m、 setTitle(“类和对象”);
m、 setImage(R.raw.objects);
增加(m);
m=新型号();
m、 setTitle(“循环”);
m、 setImage(R.raw.loop);
增加(m);
m=新型号();
m、 设定所有权(“例外”);
m、 setImage(R.raw.exception);
增加(m);
收益模型;
}
}
---
---适配器类
包com.hfad.dashboard_ui;
导入android.content.Context;
导入android.content.Intent;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入androidx.annotation.NonNull;
导入androidx.cardwiew.widget.cardwiew;
导入androidx.recyclerview.widget.recyclerview;
导入java.util.ArrayList;
公共类contentAdapter扩展了RecyclerView.Adapter{
上下文c;
ArrayList模型;
公共contentAdapter(上下文c、ArrayList模型){
这个.c=c;
这个。模型=模型;
}
@非空
@凌驾
public holder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
视图=充气机。充气(R.layout.content\u cardwiew,parent,false);
返回新的持有者(视图);
}
@凌驾
public void onBindViewHolder(@NonNull holder,int位置){
holder.text.setText(models.get(position.getTitle());
holder.image.setImageResource(models.get(position.getImage());
setItemClickListener(新的ItemClickListener(){
@凌驾
公共void侦听器(视图v,int位置){
意图;
开关(v.getId()){
案例R.id.javacardd:
if(models.get(position.getTitle().equals(“简介”)){
intent=新的intent(c,另一个activity.class);
c、 星触觉(意向);
}
打破
案例R.id.htmlcardId:
if(models.get(position.getTitle().equals(“简介”)){
intent=新的intent(c,html\u Introduction.class);
c、 星触觉(意向);
}
打破
}
}
});
}
@凌驾
public int getItemCount(){
返回models.size();
}
}

我希望输出能够区分Java和HTML的简介回收器视图,以便我可以为它们分配不同的活动

我建议您向适配器添加一个表示源的参数。例如:

---java_class for JAVA CardView enabling recycler view package com.hfad.dashboard_ui; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import java.util.ArrayList; public class java_prog extends AppCompatActivity { String name = "java_prog"; RecyclerView contentList; contentAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_java_prog); contentList = findViewById(R.id.courseContentList); contentList.setLayoutManager(new LinearLayoutManager(this)); adapter = new contentAdapter(this, getList()); contentList.setAdapter(adapter); } private ArrayList<model> getList(){ ArrayList<model> models = new ArrayList<>(); model m = new model(); m.setTitle("Introduction"); m.setImage(R.raw.intro); models.add(m); m = new model(); m.setTitle("Arrays"); m.setImage(R.raw.array); models.add(m); m = new model(); m.setTitle("Classes and Objects"); m.setImage(R.raw.objects); models.add(m); m = new model(); m.setTitle("Loops"); m.setImage(R.raw.loop); models.add(m); m = new model(); m.setTitle("Exception"); m.setImage(R.raw.exception); models.add(m); return models; } } --- --- html class for HTML CardView enabling recycler view package com.hfad.dashboard_ui; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import java.util.ArrayList; public class html_prog extends AppCompatActivity { RecyclerView contentList; contentAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_html_prog); contentList = findViewById(R.id.courseContentList); contentList.setLayoutManager(new LinearLayoutManager(this)); adapter = new contentAdapter(this, getList()); contentList.setAdapter(adapter); } private ArrayList<model> getList(){ ArrayList<model> models = new ArrayList<>(); model m = new model(); m.setTitle("Introduction"); m.setImage(R.raw.intro); models.add(m); m = new model(); m.setTitle("Arrays"); m.setImage(R.raw.array); models.add(m); m = new model(); m.setTitle("Classes and Objects"); m.setImage(R.raw.objects); models.add(m); m = new model(); m.setTitle("Loops"); m.setImage(R.raw.loop); models.add(m); m = new model(); m.setTitle("Exception"); m.setImage(R.raw.exception); models.add(m); return models; } } --- ---Adapter class package com.hfad.dashboard_ui; import android.content.Context; import android.content.Intent; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; public class contentAdapter extends RecyclerView.Adapter<holder> { Context c; ArrayList<model> models; public contentAdapter(Context c, ArrayList<model> models){ this.c=c; this.models = models; } @NonNull @Override public holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(parent.getContext()); View view = inflater.inflate(R.layout.content_cardview,parent,false); return new holder(view); } @Override public void onBindViewHolder(@NonNull holder holder, int position) { holder.text.setText(models.get(position).getTitle()); holder.image.setImageResource(models.get(position).getImage()); holder.setItemClickListener(new ItemClickListener() { @Override public void onItemClickListener(View v, int position) { Intent intent; switch (v.getId()){ case R.id.javacardId : if (models.get(position).getTitle().equals("Introduction")){ intent = new Intent(c,anotherActivity.class); c.startActivity(intent); } break; case R.id.htmlcardId : if (models.get(position).getTitle().equals("Introduction")){ intent = new Intent(c,html_Introduction.class); c.startActivity(intent); } break; } } }); } @Override public int getItemCount() { return models.size(); } }
// Adapter:

public class ContentAdapter extends RecyclerView.Adapter<holder> {

    private Context context;
    private List<Model> models;
    private AdapterType type;

    public ContentAdapter(Context context, List<Model> models, AdapterType type){
        this.context = context;
        this.models = models;
        this.type = type;
    }

   // other code here

    @Override
    public void onBindViewHolder(@NonNull holder holder, int position) {
        holder.text.setText(models.get(position).getTitle());
        holder.image.setImageResource(models.get(position).getImage());

        holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClickListener(View v, int position) {
                switch (type) {
                    case AdapterType.JAVA:
                        // Logic
                    case AdapterType.HTML:
                        // Logic
                }
            }
        });
    }
}

// Enum:
public enum AdapterType {
    JAVA, HTML
}