我在ArrayList
中传递自定义putParcelableArrayListExtra
,但是当我在其他类的onCreate
方法中收到它时,那么数组的某些值为null
put... get...
[a] -> [a]
[b] -> null
[c] -> [b]
[d] -> null
[e] -> [c]
我在intent.putParcelableArrayListExtra(key, value);
发送数据并将其设为arrayList = getIntent().getParcelableArrayListExtra(key));
请建议如何解决这个问题。
答案 0 :(得分:2)
使用pojo / setter getter类并执行 Parcelable 。
public class MyData implements Parcelable
声明你的pojo中的值是一个arraylist项
MyData data = new MyData("id", "text");
使用您的另一项活动从意图中调用parcelable方法。
Intent i = new Intent(this,MyActivity.class);
i.putExtra("key", data);
startActivity(i);
使用该类意图的parcelable方法获取列表,
MyData data = i.getExtras().getParcelable("key");
List<MyData> mList = new ArrayList<>();
mList.add(data);
答案 1 :(得分:0)
如果E类型是Serializable,则可以以相同的方式传递ArrayList。
您可以调用Intent的putExtra(String name,Serializable值)来存储,并使用getSerializableExtra(String name)进行检索。
示例:
ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
在另一项活动中:
ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
答案 2 :(得分:0)
使所有使用Parecelable的类。然后覆盖writeToParcel
并创建public static final Parcelable.Creator<YourClass>
以从包中读取并从对象中创建对象。
但最简单的方法是使用Serializable
接口。读写将自动处理。