RecyclerView 项目上的 startActivity()

startActivity() on a RecyclerView Item

我需要根据用户在 RecyclerView 上单击的项目启动 activity。下面的代码有位置作为参考。有谁知道如何完成这项工作?我需要像 Intent intent = new Intent (MainActivity.this, Target.class) 这样的东西。当然,目标 class 会根据点击的项目而变化。

        mRecyclerView.addOnItemTouchListener(
            new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
                @Override public void onItemClick(View view, int position) {

                    Intent intent = new Intent(MainActivity.this, ???);
                    startActivity(intent);

                }
            })
    );

那么,将适当的 OnClickListener 放在 RecyclerView 中每个项目的视图上怎么样?每个 OnClickListener 都可以存储处理导航所需的目标 Class。您可以在 RecyclerView 的适配器的绑定阶段处理它,没有什么神奇的。

您有对象集合(可能是 ArrayList),尝试添加具有 Class 类型字段的对象,然后像这样获取它:

                Intent intent = new Intent(MainActivity.this, objects.get(position).getClassField());
                startActivity(intent);

您只需要将一个 onclicklistener 放置到您的 viewholder(包含视图)。

private  MainActivity mAct;

viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mAct.animateActivity(anything);

        }
    });


 public void animateActivity(anything any) {


    Intent i = new Intent(this, AssetDescription.class);
    //Some anitmation if you want 
    startActivity(i);
}

Select 目标 class 通过 position:

mRecyclerView.addOnItemTouchListener(
        new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
            @Override public void onItemClick(View view, int position) {
                switch(position){
                case 0:
                    startActivity(new Intent(MainActivity.this, A.class));
                    break;
                case 1:
                    startActivity(new Intent(MainActivity.this, B.class));
                    break;
                default:
                    break;  
                }
            }
        })
);

当然,你必须定义从positiontarget class的映射。