我有很多对象,其中一些对象具有不同的ArrayList属性(自定义对象)。任何上述ArrrayList中都可能出现相同的对象。
我希望通过引用传递这些对象,以便在编辑其中一个对象时,更改将反映在所有ArrayLists /对象中。
我需要将这些对象或ArrayLists作为Parcelable传递到不同的Activity。我认为Parcelable接口导致通过引用传递不起作用(考虑到你需要实现新构造函数,哪种有意义,所以据说每次创建和传递Parcel时都会创建/克隆新对象?)。
我想知道处理这种情况的最佳方法是什么,即。如何实现或模拟通过引用传递的对象的行为。如果可以避免的话,我真的不想使用任何持久性存储技术。
答案 0 :(得分:0)
我知道这是一个老问题,但是因为我在这里:)
无论如何我做的是传递我想要的项目的ID,然后使用Application来保存我的数据。
例如,假设我有一个名为Order的类,每个订单都有很多像这样的行
class Order {
UUID _id;
List<Line> _lines = new ArrayList<>();
}
class Line {
UUID _id;
Product _product ;
BigDecimal _price;
int _quantity;
}
等
所以我有一个Application的实现,我将所有的(在内存中)命令存储起来:
public class App extends Application {
public static final List<Order> Orders = new Order();
public static final Order GetOrder(UUID id) {
for (Order o : Orders) {
If(o.get_id().Equals(id))
return o;
}
return null;
}
}
然后,如果我想通过特定的订单,我会做这样的事情:
Intent i = new Intent(this, OrderEdit.class);
i.putExtra(OrderEdit.ID, my_order.get_id().ToString());
startActivity(i);
另一方面:
UUID id = UUID.fromString(getArguments().getExtra(ID));
App.GetOrder(id);
这样你总能传递一个参考。