Android Studio点击ListView行内按钮获取关联Trip对象并跳转Activity实现问题
实现方案
首先要让Trip类支持序列化,方便跨页面传递:
- 给Trip类实现
Serializable接口(性能要求高也可以用Parcelable,实现更复杂但传递效率更高),示例:
public class Trip implements Serializable { // 原有属性、getter、setter逻辑保持不变即可 }
- 在
TripAdapter的getView方法中,给「More info」按钮绑定点击事件,直接使用当前行对应的Trip实例跳转:
找到你代码中获取到moreInfoBtn的位置,添加如下逻辑:
// 给更多信息按钮绑定点击事件 moreInfoBtn.setOnClickListener(v -> { // 替换为你要跳转的目标Activity类名即可 Intent intent = new Intent(context, TripDetailActivity.class); // 将当前行的Trip对象存入Intent intent.putExtra("trip_data", trip); context.startActivity(intent); });
如果编译报错提示trip需要是final类型,把Trip trip = getItem(position);改为final Trip trip = getItem(position);即可。
- 在跳转的目标Activity中取出Trip对象:
在目标Activity的onCreate方法中添加如下逻辑:
// 取出传递的Trip实例 Trip trip = (Trip) getIntent().getSerializableExtra("trip_data"); // 后续直接使用trip对象的属性渲染页面即可
注意事项
不要使用你代码中定义的public static Trip currentTrip静态变量存储当前行数据,列表滚动的时候行布局会复用,静态变量会被后续行的数据覆盖,容易出现点击按钮拿到错误Trip对象的问题。
内容的提问来源于stack exchange,提问作者ricardorodriguez
相关产品推荐
相关产品推荐

