Обязательно ли использовать ViewModel и Live Data Classes в MVVM Pattern в Android? Иначе мы можем использовать шаблон MVVM, не используя их? - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь реализовать шаблон MVVM в моем существующем проекте. Я путаюсь с тем множеством сайтов разработчиков и учебных пособий, которые я читал, но везде шаблон MVVM, использующий только живые данные и модель представления. Например, есть ли возможность без использования LiveData и ViewModel, можем ли мы использовать шаблон MVVM

Вопрос 1 . Без использования LiveData и ViewModel можем ли мы использовать шаблон MVVM android? Вопрос 2 .Без использования LiveData, зачем использовать расширение ViewModel для какого-либо класса (например, класс Test extends ViewModel)

Я делаю нумерацию страниц RecyclerView, чтобы получить набор записей каждый раз после окончания прокрутки, как показано ниже


 ProfileListViewModel viewModel =
                ViewModelProviders.of(this).get(ProfileListViewModel.class);


//to get first set of records
   viewModel.getProfileList().observe(this, new Observer<List<Profiles>>() {
            @Override
            public void onChanged(@Nullable List<Profiles> profiles) {
                if (projects != null) {
                    //…
                    profileAdapter.setProfiles(profiles);
                }
            }
        });





//to get second set of records

   viewModel.getRemaningProfileList().observe(this, new Observer<List<Profiles>>() {
            @Override
            public void onChanged(@Nullable List<Profiles> profiles) {
                if (projects != null) {
                    //…
                    profileAdapter.setProfiles(profiles);
                }
            }
        });



Вопрос 3 : для этой функции с помощью MVVM выполните нам нужно использовать два вызова метода (два объекта LiveData), как описано выше, для получения новых записей каждый раз, когда есть альтернатива. Это меня так смущает.

Вопрос 4 : иногда я вставляю некоторые записи в SQLite android, и в этот раз я снова вызываю этот метод с самого начала, как (viewModel.getProfileList (). Наблюдаем ()). ..после того, как '

я очищаю текущие LiveData и заново устанавливаю новые записи ... есть ли какие-либо возможности, например, как только запись вставлена ​​/ обновлена, она автоматически обновит данные sh.

Спасибо ..

1 Ответ

1 голос
/ 25 февраля 2020

Ответ 1. Вы можете использовать MVVM-паттерн без использования LiveData, но ViewModel - компьюлери, так как без него MVVM не имеет смысла. LiveData используется для наблюдения за изменениями в деятельности / фрагменте, внесенными в переменную / метод внутри модели представления.

Ответ 2. Модель представления используется для подготовки и управления данными для действия / фрагмента. Призыв к API и другие бизнес-логики написаны в модели расширения класса. Это сделано для достижения разделения кода.

Ответ 3. Если viewModel.getProfileList () получает список записей, вам не нужно использовать viewModel.getRemaningProfileList () для получения тех же данных. Изменения в viewModel.getProfileList () будут наблюдаться и увеличиваться при каждом изменении данных.

Ответ 4. Вы можете использовать методы жизненного цикла Activity / Frament для автоматического получения данных. Например, в деятельности,

onCreate(){
   ProfileListViewModel viewModel =
            ViewModelProviders.of(this).get(ProfileListViewModel.class);

}
onStart(){
     getObservedData();
}
private void getObservedData(){
viewModel.getProfileList().observe(this, new Observer<List<Profiles>>() {
        @Override
        public void onChanged(@Nullable List<Profiles> profiles) {
            if (projects != null) {
                //…
                profileAdapter.setProfiles(profiles);
            }
        }
    });
}
...