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

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

例如,

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

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

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

【问题讨论】:

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

标签: android android-intent parcelable


【解决方案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");
    

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 1970-01-01
      • 2018-05-29
      • 2019-05-27
      • 2018-06-12
      • 2016-01-14
      • 1970-01-01
      • 2018-10-02
      • 2020-06-05
      相关资源
      最近更新 更多