我对Android开发非常陌生,在这里面临一些小问题。 我有一类动物。我需要在两个活动之间传递一个Animal类的数组。我搜索了论坛,发现这可以通过Parceable完成,但我无法完全理解。我尝试使用Serializable但得到一个例外。 请指导我如何做到这一点?传递一组自定义对象+ Android
1
A
回答
6
推杆:
ArrayList<Animal> animals = new ArrayList<Animal>();
//fill your list with animals here
intent.putExtra("animals", animals);
检索:
ArrayList<Animal> animals = (ArrayList<Animal>) getIntent()
.getSerializableExtra("animals");
你的类Animal
应该实现Serializable
。
编辑: 请注意,这种方法很容易实现,但效率低下。序列化和反序列化对象需要一定的时间,并且在数组规模较大(例如,100多个对象或10多个复杂的重对象)的情况下,可能会导致活动转换出现明显的延迟。所以请考虑这种方法是暂时的,不要在生产代码中使用它。
为了提高效率,可以使用David Caunt建议的Parcelable。这是一个易于使用的代码生成器,以避免开发人员编写样板代码:Parcelabler。
一个很好的选择可以是在每个需要它的Activity
从本地数据库获取和检索本地SQLite数据库时存储数据。因此,您将仅通过意向传递Content Url。
2
你应该implement Parcelable然后你可以传递你的对象。您基本上添加了几个方法来将您的对象转换为Parcel,反之亦然。
Parcelling与Serialization类似但不相同。把它想象为重建对象。
有一个例子,你正在试图做什么here。
1
你的课动物应该实现Serializable。
将数据
ArrayList<Animal> animals = new ArrayList<Animal>();
Intent intent = new Intent(MainActivity.this,
AnimalListActivity.class);
Bundle bundleObject = new Bundle();
bundleObject.putSerializable("animal", animals);
intent.putExtras(bundleObject);
startActivity(intent);
获取数据
ArrayList<Animal> animals = new ArrayList<Animal>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.animal_activity);
Bundle bundleObject = getIntent().getExtras();
animals = (ArrayList<Animal>) bundleObject
.getSerializable("animal");
}
}
相关问题
- 1. 将自定义对象传递给另一个活动android
- 2. 传递自定义Java对象webEngine executeScript
- 3. 将自定义对象传递给Arrays.asList
- 4. 在Java中传递自定义对象
- 5. Android的 - 如何自定义对象传递给片段
- 6. 将自定义对象从Android通过KSOAP传递给webservice
- 7. Android自定义适配器传递对象的ArrayList
- 8. 将自定义对象数组传递给函数
- 9. 如何将自定义对象数组传递给ASMX webservice?
- 10. Android保存自定义对象数组
- 11. 从C#传递一个自定义对象到Powershell
- 12. 传递一个自定义对象Scala的模板
- 13. Android自定义XML对象
- 14. Android - 将自定义对象的ArrayList传递给另一个活动
- 15. 将自定义对象的数组列表传递给另一个活动
- 16. 正确的体系结构:如何传递一组自定义对象
- 17. 写一个自定义对象数组
- 18. 将自变量传递给自定义对象的新.xib
- 19. 在Android活动之间高效地传递自定义对象数据[Mono Android]
- 20. 如何通过Web服务传递自定义对象
- 21. 如何我的自定义对象传递给片段
- 22. 传递自定义对象或只是ids
- 23. 定义一组对象
- 24. 如何使用意图传递自定义列表对象
- 25. 如何在一组自定义对象中查找对象
- 26. 可传递自定义对象,当意图传递时丢失实例值
- 27. 在改造中传递自定义对象2
- 28. 如何将对象从fetchedResultsController传递给自定义单元格?
- 29. MSTest数据源 - 传递自定义对象集合
- 30. 将自定义对象从QtScript传递到C++时出错
你有什么异常? – 2011-03-28 14:12:18