Android Bundle.putLongArrayList()的备选方案

Android Bundle.putLongArrayList()的备选方案,android,Android,我有一个ArrayList对象,我想在片段的方向改变时保留它。但是Bundle类没有putLongArrayList()方法。我确实看到了putParcelableArrayList(),putpintegerarraylist()和putStringArrayList() 是否有任何原因导致未定义方法的Long版本?除了为Long对象创建wrapper-parcelable类,然后使用putParcelableArrayList(),还有其他简单的解决方法吗?我认为应该使用这种方法 不过,您

我有一个
ArrayList
对象,我想在片段的方向改变时保留它。但是
Bundle
类没有
putLongArrayList()
方法。我确实看到了
putParcelableArrayList()
putpintegerarraylist()
putStringArrayList()

是否有任何原因导致未定义方法的
Long
版本?除了为
Long
对象创建wrapper-parcelable类,然后使用
putParcelableArrayList()
,还有其他简单的解决方法吗?

我认为应该使用这种方法

不过,您必须先将ArrayList转换为数组,然后才能将其放入捆绑包中

当您从Bundle中获取LongArray时,可以将其转换回ArrayList,以便再次对其执行类似列表的操作

放入捆绑包

long[] array = new long[yourArrayList.size()];
for(int i=0;i<yourArrayList.size();i++){
    array[i] = yourArrayList.get(i);
}
Bundle b = new Bundle();
b.putLongArray("longs", array);
long[] array = b.getLongArray("longs");
for(int i=0; i<array.length;i++) arrayList.add(array[i])
long[]array=new long[yourArrayList.size()];

对于(int i=0;i但我的数组的大小未定义,这就是我使用arraylist的原因。在方向改变后,我也必须将其转换回。您认为还有其他选择吗?您可以将arraylist用于所有正常操作,但当您将其放入捆绑包时,必须先将其转换为数组,然后在获得它时再使用它从捆绑包中,您可以将其转换回ArrayList
yourArrayList.toArray(new long[yourArrayList.size())
不起作用,因为它允许我使用
new long
而不是
new long
然后使用new long;-)解决方法是创建一个新的ArrayList并在数组上循环,用数组的值填充ArrayList。