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

Android开发:如何按条目位置为同一EditText存储独立文本内容

问题根因

当前所有影视条目的观感内容,都存在SharedPreferences下固定名为content的键里,不管选中哪个position的条目,保存和读取都操作同一个键值对,自然会出现不同页面内容串改、同步的问题。

修复方案

给每个列表条目绑定专属独立的存储键名,用从Intent拿到的position区分不同条目,每个条目的内容存在对应独立的键下,就不会互相覆盖。

具体代码修改(仅需调整详情页anime_details代码)

  • 新增成员变量存储当前条目的专属存储键
// 当前条目对应的SharedPreferences存储key
private String currentSpKey;
  • 在onCreate方法获取到position后,初始化专属key
    在position = b2.getInt("position",0);代码后新增:
// 用position拼接唯一key,不同position对应独立存储位置
currentSpKey = "anime_content_" + position;
  • 修改保存、读取逻辑的key,替换原有固定的content键
    修改后的保存方法:
public void saveText(View v){
    spe = sp.edit();
    spe.putString(currentSpKey, contentText.getEditableText().toString());
    spe.apply(); // 用apply替代commit,异步写入不阻塞主线程,性能更优
}

修改后的读取方法:

public void retrieveText(View v){
    contentText.setText(sp.getString(currentSpKey,""));
}

可选体验优化

如果需要进入详情页时自动加载之前保存过的观感,不需要用户手动点取回按钮,可以在onCreate方法里给控件赋值完海报、标题后,直接加一行读取逻辑:

// 进入页面自动加载已存内容
contentText.setText(sp.getString(currentSpKey,""));

进阶注意事项

如果后续你的影视列表会做排序、新增/删除条目的操作,列表position会发生变化,单纯用position当key会出现内容和影视条目标题/海报错位的问题。这种场景建议给每个影视条目配置全局唯一的固定id,通过Intent把条目id传到详情页,用id拼接存储key即可避免错位,固定顺序的列表用position做标识完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:27:17