2016-05-23 8 views
1

私はこれらの製品を編集できる製品のリストと詳細ビューを表示するアクティビティを持っています。両方のアクティビティから同じ製品リストにアクセスしたいと思います。アクティビティ間のグローバルデータ

これらの複数のアクティビティ間でこのグローバルデータを保存/使用するにはどうすればよいですか?

答えて

2

Singletonデザインパターンを使用することができます。クラスを作成し、製品のリストを保持するインスタンスを1つだけに制限します。その後、あなたの活動の両方から、このインスタンスと同じリストにアクセス:

// singleton Manager 
public class ProductManager { 
    private static ProductManager sInstance; 
    private List<Product> mProducts; 

    // private constructor to limit new instance creation 
    private ProductManager() { 
     // may be empty 
    } 

    public static ProductManager getInstance() { 
     if (sInstance == null) { 
      sInstance = new ProductManager(); 
     } 
     return sInstance; 
    } 

    public List<Product> getProducts() { 
     return new ArrayList<>(mProducts); 
    } 

    // add logic to fill the Products list 
    public void setProducts(List<Product> products) { 
     mProducts = new ArrayList<>(products); 
    } 
} 

アクセスを、それ以降の両方の活動から:

MyListActivity.java:

// set products once you get them 
ProductManager.getInstance().setProducts(yourProductsList); 
// ... 

DetailsActivity.java:

// get the same list 
ProductManager.getInstance().getProducts(); 
// ... 
+0

スタティック変数はクラスインスタンス間で共有されるため、シングルトンの必要はありません –

+1

これはたぶん2つのアクティビティだけの過剰ですが、私の意見ではデザインが優れています。このリストは、アプリのどこからでもアクセスでき、すべてのロジック、キャッシングなどをカプセル化することができます。 –

+0

*しかし、私の意見ではデザインが優れています*あなたはそれを何と比較していますか? –

0

1)Array Listは、Application LevelまたはBase Activityでstaticとして定義できます。

2)配列リストを、シリアライズ可能またはパーセル可能な他のアクティビティに渡します。

3)配列リストにデータがあると、SharedPreferencesを使用できます。

関連する問題