Nasza firma rozwijała aplikację na Androida, wykorzystując wzór MVP. W MVP umieszczamy całą logikę biznesową wewnątrz prezentera, a Activity/Fragment odpowiada za aktualizację widoku podczas odbierania wywołania zwrotnego od prezentera.Co należy zrobić w Activity/Fragment i ViewModel w MVVM
Teraz zdecydowaliśmy się wypróbować MVVM przy użyciu Android Databinding. Wydaje się, że dzięki MVVM możemy umieścić całą logikę biznesową w ViewModel (podobnie jak Presenter w MVP), a także powiadamiać widok (y) o wszelkich zmianach w modelu danych, wszystko w jednym obiekcie.
Ale to pytanie rodzi się w naszym umyśle, co powinniśmy zostawić, aby poradzić sobie z Działaniem/Fragmentem? Ponieważ przyjęliśmy wzór MVP, aby uniknąć działania tłuszczu/fragmentu /fragmentu. Nie chcemy mieć cienkiej aktywności/fragmentu , a następnie fat-viewmodel.
Co myślimy, że możemy w lewo będzie obsługiwać przez działanie/Fragment dotychczas
- Zapytanie/Sprawdź pozwolenie
- Dostęp Kontekst
- dostęp do zasobów
Każda korekta, komentarz lub sugestie są mile widziane, ponieważ jestem całkiem nowy w MVVM, nawet jeśli wydaje się, że jest podobny do MVP.
Dziękuję.
Nieco bardziej kwestia
Czy to możliwe, i dobra praktyka, aby połączyć MVVM z słuchacza (jak MVP)? Na przykład
public class MainActivityViewModel extends BaseObservable {
MainActivityViewModelListener listener;
User user;
public void setMainActivityViewModelListener(MainActivityViewModelListener listener) {
this.listener = listener;
}
public void refreshUser(View v) {
// some user update via Internet
notifyPropertyChanged(BR.userAlias);
if (listener != null) {
listener.onUserRefreshed(user);
}
}
@Bindable
public void getUserAlias() {
return user.getAlias();
}
}
public interface MainActivityViewModelListener {
void onUserRefreshed(User user);
}
public class MainActivity implements MainActivityViewModelListener {
MainActivityBinding binding;
@Override
public void onCreate(Bundle savedInstanceState) {
binding = DataBindingUtil.setContentView(R.layout.main_activity);
MainActivityViewModel viewModel = new MainActivityViewModel();
viewModel.setMainActivityViewModelListener(this);
binding.setMainActivityViewModel(viewModel);
}
@Override
public void onUserRefreshed(User user) {
// do some update
}
}
+ 1 link Github. Przeszedłem kilka tutoriali i wypróbowałem jedną przykładową implementację, przykład projektu bardzo pomoże! –
możesz odnieść [to] (http://stackoverflow.com/a/40479052/3134215) również po więcej. –
Hej! @RaviRupareliya, fragmenty transakcji i animacje powinny być wykonane na działanie? –