如何将列表数据从活动 A 发送到活动 B 并在活动 B 中编辑数据

Posted

技术标签:

【中文标题】如何将列表数据从活动 A 发送到活动 B 并在活动 B 中编辑数据【英文标题】:How to send a list data from Activity A to Activity B and edit the data inside Activity B 【发布时间】:2021-11-09 21:51:44 【问题描述】:

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

活动 A

 private var items : Lists<Items> 

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

活动 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"
                
            
        

【问题讨论】:

删除了 android-studio 标签,因为该标签用于解决有关 Android Studio 产品的问题/问题。您的问题是一个通用的 Android 问题。 【参考方案1】:

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

让我用一个例子来解释

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

例如:

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

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

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

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

现在在您的FirstActivity 类中,为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 的回答。您可以查看它以获取更多详细信息

【讨论】:

如何使用此方法将列表数据从活动 A 发送到 B? putArrayListExtra

以上是关于如何将列表数据从活动 A 发送到活动 B 并在活动 B 中编辑数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像从活动 A 传递到活动 B?

如何在 Kotlin 中将对象列表从活动 A 传递到活动 B?

如何将数据从活动 A 传递/保存到 B,然后再传递到 B?

如何在不打开的情况下将数据发送到另一个活动

从活动中调用片段事件

将活动之间的数据从列表视图传递到另一个活动