如何将列表数据从活动 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 中编辑数据的主要内容,如果未能解决你的问题,请参考以下文章