RecyclerView项上的startActivity()

时间:2015-05-13 08:27:09

标签: android onitemclick android-recyclerview

我需要根据用户点击RecyclerView的项目开始活动。下面的代码有作为参考的位置。有谁知道怎么做到这一点?我需要像Intent intent = new Intent (MainActivity.this, Target.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);

                }
            })
    );

4 个答案:

答案 0 :(得分:1)

那么,如何在RecyclerView中的每个项目的View上放置正确的OnClickListener?每个OnClickListener都可以存储处理导航所需的目标类。你可以在RecyclerView适配器的绑定阶段处理这个问题,但这并不神奇。

答案 1 :(得分:1)

通过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的映射。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您只需要将一个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);
}