簡體   English   中英

Android Parcelable和通過引用傳遞的對象

[英]Android Parcelable and object passing by reference

我有很多對象,其中一些對象具有不同的ArrayList屬性(自定義對象)。 任何上述ArrrayList中都可能出現相同的對象。

我希望通過引用傳遞這些對象,以便在編輯其中一個對象時,更改將反映在所有ArrayLists /對象中。

我需要將這些對象或ArrayLists作為Parcelable傳遞到不同的Activity。 我認為Parcelable接口導致通過引用傳遞不起作用(考慮到你需要實現新的構造函數,哪種有意義,所以據說每次創建和傳遞Parcel時都會創建/克隆新對象?)。

我想知道處理這種情況的最佳方法是什么,即。 如何實現或模擬通過引用傳遞的對象的行為。 如果可以避免的話,我真的不想使用任何持久性存儲技術。

我知道這是一個老問題,但是因為我在這里:)

無論如何我做的是傳遞我想要的項目的ID,然后使用應用程序來保存我的數據。

例如,假設我有一個名為Order的類,每個訂單都有很多這樣的Line

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

這樣你總是有一個參考傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM