java - 从 RecyclerView 中的 ViewHolder 调用 Activity ?

标签 java android

我有一个 RecyclerView,它正在加载我的 String 数组的内容,它工作正常,但是我想根据他们按下的 View 打开一个新 Activity 。

我所做的是创建一个名为类的数组,如下所示:

<array name="classes">
    <item>ClassOne</item>
    <item>ClassTwo</item>
    <item>ClassThree</item>
    <item>ClassFour</item>
</array>

这些存储在一个数组中,并传递给我下面的 MainActivityList 适配器:

String[] classes = resource.getStringArray(R.array.classes);
MainActivityList adapter = new MainActivityList(titles,content, images, classes);
recyclerView.setAdapter(adapter);

我已经设法将 OnClickListener 添加到 ViewHolder 并将分配给每个 View 的类输出到日志,但是我无法弄清楚或开始工作,如何启动另一个 Activity 。

例如,类名类似于 ClassOne.class

public class MainActivityList extends RecyclerView.Adapter<MainActivityList.ViewHolder>  {
    private String[] mTitles;
    private String[] mContent;
    private String[] mClasses;
    private TypedArray mImages;
    private Context context;

    public MainActivityList(String[] titles, String[] content, TypedArray images, String[] classes) {
        this.mTitles = titles;
        this.mContent = content;
        this.mImages = images;
        this.mClasses = classes;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup,int i) {
        final View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.activity_main_card, viewGroup, false);
        ViewHolder vh = new ViewHolder(v);

        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                ViewHolder vh = (ViewHolder)v.getTag();
                Log.v("DEBUG", "Clicked" + vh.classes);
            }
        });
        return vh;
    }

    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.titleView.setText(mTitles[position]);
        holder.contentView.setText(mContent[position]);
        holder.imageView.setImageDrawable(mImages.getDrawable(position));
        holder.classes = mClasses[position];
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        public  TextView titleView;
        public  TextView contentView;
        public  ImageView imageView;
        public String classes;

        public ViewHolder(View v) {
            super(v);
            titleView = (TextView) v.findViewById(R.id.card_title);
            contentView = (TextView) v.findViewById(R.id.card_content);
            imageView = (ImageView)v.findViewById(R.id.card_image);
            v.setTag(this);
        }
    }

    @Override
    public int getItemCount() {
        return mTitles.length;
    }

}

最佳答案

Intent intent = new Intent(viewObject.getContext(),ActivityName.class);
viewObject.getContext().startActivity(intent);

关于java - 从 RecyclerView 中的 ViewHolder 调用 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688620/

相关文章:

java - AsyncTask 不返回 TreeMap

android - 无法解析 Zendesk 库

android - 响应为 204(无内容)时的 SSLHandshakeException

java - 当 X 发生时,使用 Observable 在 fragment 之间传递数据

java - 为什么从 Firebase 读取用户数据时会出现空指针异常?

java - 如何在 Java 中处理虚拟文件系统中单个文件中的资源

java - Android:哪个运算符用于模数(%不适用于负数)

java - 另一个作业问题错误需要意外类型 :variable found:value

java - 如何在java中将具有以下扩展名的图像转换为.TIFF:jpg、pdf、gif、xls、xlsx、doc、docx、rtf、bmp、jpeg、csv?

android - 如何单击 fragment 中的按钮以切换到 Kotlin 中的其他选项卡?