如何将列表数据从 Activity A 发送到 Activity B 并编辑 Activity B 中的数据

How to send a list data from Activity A to Activity B and edit the data inside Activity B

我想从 Activity A 发送一个列表到 Activity B。当我收到 Activity B 中的数据时,我想对收到的列表进行更改项目。当我回到 Activity A 时,我想看看我刚刚所做的更改。到目前为止,我已经尝试使用意图发送数据列表,但是当我尝试编辑它时,没有进行更改。这是我的代码示例:

Activity一个

 private var items : Lists<Items> 

  context.startActivity(
                Intent(context, B::class.java).apply {
                    putExtra("itemList", items as ArrayList)
                }
            )

Activity B

 val itemList = intent?.extras?.getSerializable("itemList") as? ArrayList<Items>

  // trying to edit the list
  itemList.forEachIndexed { index, t ->
            run {
                if (t.id == tweet.id) {
                    items[index].name = "hello"
                }
            }
        }

基本上你可以在这种情况下使用startActivityForResult

我举个例子解释一下

从您的 FirstActivity 使用 startActivityForResult() 方法调用 SecondActivity

例如:

int LAUNCH_SECOND_ACTIVITY = 1
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, LAUNCH_SECOND_ACTIVITY

在您的 SecondActivity 中,将您想要 return 的数据设置回 FirstActivity。如果您不想return返回,请不要设置。

例如:在SecondActivity如果要发回数据:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

现在在您的 FirstActivity class 中,为 onActivityResult() 方法编写以下代码。

Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == LAUNCH_SECOND_ACTIVITY) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            // Write your code if there's no result
        }
    }
} //onActivityResult

感谢this回答。您可以查找更多详细信息