2016-05-23 2 views
1

У меня есть активность, которая показывает список продуктов и подробный обзор, где я могу редактировать эти продукты. Я хочу получить доступ к одному и тому же списку продуктов из обоих видов деятельности.Глобальные данные между действиями

Как хранить/использовать эти глобальные данные между этими несколькими действиями?

ответ

2

Возможно, вы захотите использовать шаблон дизайна Singleton: создайте класс и ограничьте его только одним экземпляром, который будет содержать список продуктов. После этого, доступ к этому экземпляру и тот же список из обоих ваших действий:

// 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

Это, вероятно, избыток для всего двух видов деятельности, но дизайн, на мой взгляд, лучше. Этот список будет доступен из любого места приложения и может инкапсулировать всю логику, кеширование и другие материалы. –

+0

* но дизайн лучше, на мой взгляд, с чем вы сравниваете? –

0

1) Вы можете определить массив List как статичный в уровне приложения или базовой операции.

2) Передача массива Список других видов деятельности с использованием сериализуемых или разборчивых.

3) У вас больше данных в списке массивов, тогда вы можете использовать SharedPreferences.

Смежные вопросы