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

Мне нужно приложение, которое должно иметь рабочий процесс пользовательского интерфейса, где пользователь должен иметь возможность просматривать конкретный раздел приложения, который может быть либо ListView, либо GridView, и где он может использовать элемент для раскрытия информации об этом конкретный элемент. Теперь, если пользователь переместится вправо справа, т.е. ViewPager, пейджер View должен изменить фрагмент, чтобы отобразить следующий или предыдущий элемент в предыдущем списке в зависимости от направления движения пользователя, также когда пользователь нажал назад в представлении подробного элемента существующий ViewPager должен быть закрыт, а предыдущий ListView или GridView должен быть показан, а позиция представления должна быть установлена ​​на элемент, который пользователь просматривал в ViewPager.

Чтобы все было просто и эффективно, два представления, т.е. ListView и Подход, должны читать и записывать в одну и ту же структуру данных, и они должны синхронизироваться таким образом, чтобы при загрузке больше данных запускалось на одном экране, а между тем, если пользователь выбирает конкретный элемент, следующий вид должен автоматически обновлять данные после завершения загрузки на предыдущем экране.

enter image description here

Также как Fancy или 9gag

EDIT: я не хочу поддерживать базу данных, мне нужен доступ к данным только до тех пор, пока не будет активен мой процесс.

Ответ 1

Android обеспечивает сопоставление значений String различным типам Parcelable с помощью Bundle.

Для деятельности: -

Intent in = new Intent(Sender.this, Receiver.class); 
in.putString(key, value)
startActivity(in);

Для Fragment используйте Bundle: -

Fragment fragment = new Fragment(); 
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

Изменить для вашего сценария: Я думаю, что лучшим вариантом является создание ApplicationPool.

Выполните следующие шаги:  Инициализировать ApplicationPool: -

ApplicationPool pool = ApplicationPool.getInstance();

изменить данные на странице сведений и добавить в пул

pool.put("key", object);

получить измененные данные на странице списка из пула

Object  object = (Object) pool.get("key");

важные примечания: - уведомлять о просмотре списка или gridview после получения данных

Файл класса ApplicationPool

public class ApplicationPool {

    private static ApplicationPool instance;
    private HashMap<String, Object> pool;

    private ApplicationPool() {
        pool = new HashMap<String, Object>();
    }

    public static ApplicationPool getInstance() {

        if (instance == null) {
            instance = new ApplicationPool();

        }

        return instance;
    }

    public void clearCollectionPool() {
        pool.clear();
    }

    public void put(String key, Object value) {
        pool.put(key, value);
    }

    public Object get(String key) {
        return pool.get(key);
    }

    public void removeObject(String key) {

        if ((pool.get(key)) != null)
            pool.remove(key);

    }
}