You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让ListView中的每一项点击后打开带有新数据的空白独立Activity

问题原因

你当前的跳转逻辑没有向SecondActivity传递当前点击列表项的对应标识,所有跳转启动的SecondActivity都会默认加载同一份默认数据,所以会出现所有打开的页面内容一致的问题。

解决步骤

1. 跳转时携带列表项的唯一标识参数

在ListView的点击监听逻辑中,拿到当前点击项对应的笔记ID/数据索引,通过Intent的Extra参数传递给SecondActivity。如果你用的是ListView的OnItemClickListener,参考代码如下:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // 取当前点击项对应的笔记ID,也可根据你的业务逻辑传数据索引
        long currentNoteId = yourNoteDataList.get(position).getId();
        Intent i = new Intent(view.getContext(), SecondActivity.class);
        // 向Intent存入标识参数,新建空白页可传约定的特殊值比如-1
        i.putExtra("note_id", currentNoteId);
        startActivity(i);
    }
});

2. SecondActivity接收参数,加载对应内容

在SecondActivity的onCreate生命周期中接收传递的参数,根据参数值加载对应的数据,或者加载空白页面:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    
    // 读取Intent传递的参数,默认值设为约定的空白页标识-1
    long targetNoteId = getIntent().getLongExtra("note_id", -1);
    
    if (targetNoteId == -1) {
        // 初始化空白页面逻辑
        initEmptyNotePage();
    } else {
        // 根据ID查询对应笔记数据,加载到页面
        Note note = yourDatabase.queryNoteById(targetNoteId);
        renderNoteData(note);
    }
}

注意事项

  • Android默认的Activity启动模式是standard,每次启动都会生成新实例,如果你的SecondActivity配置了特殊启动模式,可在跳转时给Intent添加i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 强制生成新实例。
  • 传递的标识要和列表绑定的数据一一对应,避免出现位置和数据不匹配的问题。

内容的提问来源于stack exchange,提问作者Hazem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 10:18:13