我需要根据用户点击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);
}
})
);
答案 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;
}
}
})
);
当然,您必须定义从position
到target 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);
}