将 ArrayList 的 ArrayList 传递给另一个类

Posted

技术标签:

【中文标题】将 ArrayList 的 ArrayList 传递给另一个类【英文标题】:pass ArrayList of ArrayList to another class 【发布时间】:2021-05-06 07:31:22 【问题描述】:

如何传递ArrayListArrayList,比如我创建了一个对象。

例如,

我有一个班级OperationInfo,我需要将ArrayList<ArrayList<OperationInfo>> 传递给其他班级。我的OperationInfo 类是可打包的。

但似乎intent 不允许我们使用putParcelableArrayListExtra 传递列表列表

有没有办法将列表传递给另一个类?

【问题讨论】:

一种方法,您可以将其序列化为 json 字符串,将其传递并反序列化回所需的 list ,虽然与 parcel 相比效率不高,但可以。 在putextra中使用hashmap 【参考方案1】:

我猜你可以手动循环遍历列表并将每个子列表保存到包中,同时将键作为索引以及总数

Bundle data = new Bundle();
data.putInt("size", mainList.size);
int key = 0;
for(ArrayList<OperationInfo> operationInfoList: mainList)
    data.putParcelableArrayListExtra(""+ (key++), operationInfoList)
 

通过上述捆绑并在接收端

 ArrayList<ArrayList<OperationInfo>> decodedList = new ArrayList<>();
 int size = getIntent().getIntExtra("size", 0);
 for(int key = 0; key < size; key++)
    decodedList.add(getIntent().getParcelableArrayListExtra(""+(key--)));
 

【讨论】:

【参考方案2】:

只需使用 intent.putExtra() 并传递您的 parceable arraylist。

在其他活动中得到这样的arraylist

getIntent().getParcelableExtra("param_name");

【讨论】:

以上是关于将 ArrayList 的 ArrayList 传递给另一个类的主要内容,如果未能解决你的问题,请参考以下文章

数据结构复习笔记系列1 — ArrayList

数据结构复习笔记系列1 — ArrayList

JList 和 ArrayList 更新

JDK源码之 ArrayList

C# 模态框传值

将 ArrayList 的 ArrayList 传递给另一个类