java - Android Parcelable 和对象通过引用传递

标签 java android reference parcelable

我有许多对象,其中一些对象具有不同的 ArrayList 属性(自定义对象的)。相同的对象可能出现在上述任何一个 ArrrayList 中。

我希望通过引用传递这些对象,这样当我编辑其中一个时,更改会反射(reflect)在所有 ArrayLists/对象中。

我需要将这些对象或 ArrayList 作为 Parcelable 传递给不同的 Activity。我认为 Parcelable 接口(interface)导致按引用传递不起作用(考虑到您需要实现新的构造函数,哪种有意义,所以假设每次创建和传递 Parcel 时都会创建/克隆新对象?)。

我想知道处理这种情况的最佳方法是什么,即。我怎样才能实现或模拟通过引用传递的对象的行为。如果可以避免,我真的不想使用任何持久性存储技术。

最佳答案

我知道这是一个老问题,但既然我来了 :)

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

例如,假设我有一个名为 Order 的类,每个订单都有很多这样的 Line(s)

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

这样你总能传递一个引用。

关于java - Android Parcelable 和对象通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875415/

相关文章:

c++ - C++ 中的每个表达式是否都具有非指针类型,如非引用类型

java - 如何在Java中显示多个超链接

Python 中 Java 的 Mahout 等价物

android - 自定义 View 不必要地重绘

android - 如何减少背景图片的内存占用?

将一个指针的引用复制到另一个指针 C

visual-studio-2008 - Visual Studio : Relative Assembly References Paths

java - 应用程序卸载时退出线程

java - 在这种情况下,中间流和终端流方法如何工作

Android、Microsoft Graph API - 网络无法访问