Может ли кто-нибудь объяснить, как использовать ViewModel и LiveData при реализации архитектуры MVVM в Android - PullRequest
0 голосов
/ 14 ноября 2018

Я немного застрял в понимании отношения ч / б, используя viewmodel и livingata.Я надеюсь, что кто-то может объяснить это для меня.Я новичок в разработке Android.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Для архитектуры MVVM это выглядит так: вы создаете модель с вашими данными, вы получаете к ней доступ и изменяете ее в модели представления (в случаях LiveData).И наблюдайте это в представлениях (действиях / фрагментах).

MainViewModel extends ViewModel{

   MutableLiveData<String> someStringObject = new MutableLiveData<>;

   private void someMethod{
       someStringObject.setValue("For main thread");
       someStringObject.postValue("For back thread");
   }

   public MutableLiveData<String> getSomeStringObject(){
       return someStringObject;
   }
}


FragmentA extends Fragment{ 

   @BindView(R.id.tv) //ButterKnife 
   TextView someTV;
   private MainViewModel mainViewModel;

   @Override
   public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState){
      //getting viewModel
      mainViewModel = ViewModelProviders.of(getActivity()).get(MainViewModel.class);
      //registering observer
      mainViewModel.getSomeStringObject.observe(this, value ->{
           someTV.setText(value);
      });
  }
}

Таким образом, вы можете реагировать на изменения ViewModel в вашем View.Теперь, если getSomeStringObject изменен в mainViewModel, он автоматически изменится во FragmentA.

0 голосов
/ 14 ноября 2018

Это все хорошо объяснено здесь .Цель ViewModel - манипулировать данными, чтобы предоставить данные, необходимые для представления, как в любом обычном шаблоне mvp .Вместо этого LiveData является обратным вызовом (с учетом жизненного цикла) для модели представления, поэтому при каждом обновлении набора данных (что может привести к изменению состояния модели) поток выполнения возвращается в модель, так что модельможет обновлять себя, например, манипулировать новым набором данных, прежде чем предоставлять его представлению.Я надеюсь, что это ясно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...