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;
}
}
})
);
当然,你必须定义从position
到target class
的映射。
我需要根据用户在 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;
}
}
})
);
当然,你必须定义从position
到target class
的映射。