Android Parcelable和对象按引用传递

4
我有许多对象,其中一些具有不同的ArrayList属性(自定义对象)。相同的对象可能出现在任何上述ArrayList中。
我希望通过引用传递这些对象,以便在编辑其中一个对象时,所有ArrayLists /对象都会反映出更改。
我需要将这些对象或ArrayList作为Parcelable传递到不同的活动中。我认为Parcelable接口导致了引用传递无法工作(考虑到您需要实现新构造函数,因此每次创建和传递包裹时都会创建/克隆新对象),这种情况似乎是有道理的?
我想知道处理这种情况的最佳方法是什么,即如何实现或模拟通过引用传递对象的行为。如果可以避免使用任何持久性存储技术,那就太好了。

找到任何好的方法了吗? - Panos
1个回答

0

我知道这是一个老问题,但因为我在这里 :)

无论如何,我的做法是传递我想要的项目的ID,然后使用应用程序来保存我的数据。

例如,假设我有一个名为Order的类,每个订单都有很多行。

class Order {
    UUID _id;
    List<Line> _lines = new ArrayList<>();
}

class Line {
    UUID _id;
    Product _product ;
    BigDecimal _price;
    int _quantity;
}

所以我有一个应用程序的实现,我将所有我的(内存中的)订单存储在这里:

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); 

这样你总是有一个传递的参考。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接