recycleview点击项目后跳转展示,不使用context
时间: 2023-12-31 16:05:59 浏览: 83
RecyclerView item 点击跳转事件
5星 · 资源好评率100%
要跳转到另一个页面并展示内容,需要使用Intent。在RecyclerView的Adapter中,可以通过ViewHolder中的itemView来获取当前点击的项目的视图对象,然后通过视图对象获取所需的数据,最后将数据添加到Intent中,启动另一个Activity并传递Intent。
以下是示例代码:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<MyData> mDataList;
public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView mNameTextView;
private TextView mDescriptionTextView;
public MyViewHolder(View itemView) {
super(itemView);
mNameTextView = itemView.findViewById(R.id.name_text_view);
mDescriptionTextView = itemView.findViewById(R.id.description_text_view);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Context context = view.getContext();
int position = getAdapterPosition();
MyData data = mDataList.get(position);
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("name", data.getName());
intent.putExtra("description", data.getDescription());
context.startActivity(intent);
}
}
public MyAdapter(List<MyData> dataList) {
mDataList = dataList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
MyData data = mDataList.get(position);
holder.mNameTextView.setText(data.getName());
holder.mDescriptionTextView.setText(data.getDescription());
}
@Override
public int getItemCount() {
return mDataList.size();
}
}
```
在上面的代码中,我们在ViewHolder中实现了View.OnClickListener接口,并在构造函数中为itemView设置了点击监听器。当用户点击RecyclerView中的项时,onClick方法将被调用,我们可以在其中获取当前项的位置和数据,然后将数据添加到Intent中并启动DetailActivity。请注意,我们使用了View的getContext()方法来获取当前项的上下文。
阅读全文