adapter viewholder.LinearLayout 点击跳转activity
时间: 2025-01-05 15:37:20 浏览: 7
在Android开发中,`RecyclerView` 是一个常用的组件,用于显示列表数据。为了提高性能和用户体验,通常会使用 `ViewHolder` 模式来优化 `RecyclerView` 的适配器(Adapter)。下面是一个示例,展示了如何在 `RecyclerView` 的 `ViewHolder` 中处理点击事件,并跳转到另一个 `Activity`。
首先,创建一个 `RecyclerView` 的适配器:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<String> mData;
private Context mContext;
public MyAdapter(Context context, List<String> data) {
this.mData = data;
this.mContext = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.bind(mData.get(position));
}
@Override
public int getItemCount() {
return mData.size();
}
class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView textView;
public MyViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
itemView.setOnClickListener(this);
}
public void bind(String data) {
textView.setText(data);
}
@Override
public void onClick(View view) {
int position = getAdapterPosition();
String item = mData.get(position);
Intent intent = new Intent(mContext, DetailActivity.class);
intent.putExtra("item_data", item);
mContext.startActivity(intent);
}
}
}
```
在上述代码中:
1. `MyAdapter` 继承自 `RecyclerView.Adapter`,并包含一个内部类 `MyViewHolder`。
2. `MyViewHolder` 实现了 `View.OnClickListener` 接口,并在构造函数中为 `itemView` 设置了点击监听器。
3. 在 `onClick` 方法中,获取点击项的位置和数据,并启动一个新的 `Activity`(`DetailActivity`),同时传递数据。
接下来,创建一个新的 `Activity` 来显示传递过来的数据:
```java
public class DetailActivity extends AppCompatActivity {
TextView detailTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
detailTextView = findViewById(R.id.detail_text_view);
Intent intent = getIntent();
String data = intent.getStringExtra("item_data");
detailTextView.setText(data);
}
}
```
在 `DetailActivity` 中,通过 `Intent` 获取传递过来的数据,并显示在 `TextView` 中。
阅读全文