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

Android ListView编辑异常:点击任意项仅修改第一项的求助

问题原因
  • 编辑页面(d_Game_message_edit)保存备忘录时,未将备忘录的位置编号(requestCode)回传给主页面。主页面接收结果时因获取不到正确位置,只能使用默认值0,导致每次都修改数组第一项。
  • 编辑页面中截取编号的逻辑(s.substring(0,2))存在隐患,当备忘录编号超过9(如10.)时会截取错误内容。
修复步骤

1. 修改编辑页面(d_Game_message_edit)

需要先接收主页面传来的requestCode并保存,再在保存时回传该值,同时优化编号截取逻辑:

public class d_Game_message_edit extends AppCompatActivity {

   TextView txv;
   EditText edt;
   // 新增变量保存备忘录位置
   private int memoPosition;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_dgame_message_edit);

       Intent it = getIntent();               
       String s = it.getStringExtra("memo");  
       // 接收主页面传来的位置编号
       memoPosition = it.getIntExtra("requestCode", 0);

       txv = (TextView)findViewById(R.id.textView);
       edt = (EditText)findViewById(R.id.editText);
       // 优化编号截取:通过"."的位置分割编号与内容
       int dotIndex = s.indexOf(".");
       if(dotIndex != -1){
           txv.setText(s.substring(0, dotIndex + 1));
           // 若存在内容,去除首尾空格后设置到输入框
           if(s.length() > dotIndex + 1){
               edt.setText(s.substring(dotIndex + 1).trim());
           }
       }
   }

   public void onCancel(View v) {  
       setResult(RESULT_CANCELED);
       finish();    
   }

   public void onSave(View v) {    
       Intent it2 = new Intent();
       // 回传备忘录位置编号
       it2.putExtra("requestCode", memoPosition);
       // 拼接编号与内容,去除多余空格
       it2.putExtra("memo", txv.getText().toString().trim() + " " + edt.getText().toString().trim()); 
       setResult(RESULT_OK, it2); 
       finish();    
   }
}

2. 主页面逻辑确认

主页面传递位置编号、接收结果的逻辑已正确,无需修改。修复后点击任意备忘录项编辑,保存后会对应修改数组中对应位置的内容。

额外优化建议
  • 用ArrayList<String>替代固定长度的String[],可灵活添加/删除备忘录项,避免数组长度限制。
  • 将备忘录数据持久化(如保存到SharedPreferences或本地文件),防止APP重启后数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:02:23