From cb165a1e430926fd254c9004cfc1d35734b5a8c7 Mon Sep 17 00:00:00 2001 From: Jeremy Karlson Date: Wed, 22 Nov 2017 15:42:06 -0800 Subject: [PATCH] Add viewmodel list fragments. --- .../ViewModelListFragment.java | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 viewmodelbinding/src/main/java/cz/kinst/jakub/viewmodelbinding/ViewModelListFragment.java diff --git a/viewmodelbinding/src/main/java/cz/kinst/jakub/viewmodelbinding/ViewModelListFragment.java b/viewmodelbinding/src/main/java/cz/kinst/jakub/viewmodelbinding/ViewModelListFragment.java new file mode 100644 index 0000000..750e48a --- /dev/null +++ b/viewmodelbinding/src/main/java/cz/kinst/jakub/viewmodelbinding/ViewModelListFragment.java @@ -0,0 +1,118 @@ +package cz.kinst.jakub.viewmodelbinding; + +import android.content.Context; +import android.content.Intent; +import android.databinding.ViewDataBinding; +import android.os.Bundle; +import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.ListFragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + + +public abstract class ViewModelListFragment extends ListFragment implements ViewInterface, OnViewModelInitializedCallback { + + @NonNull + private final ViewModelBindingHelper viewModelBindingHelper = new ViewModelBindingHelper<>(); + + @Override + public void onCreate(@Nullable final Bundle savedInstanceState) { + viewModelBindingHelper.onCreate(this, savedInstanceState, this); + super.onCreate(savedInstanceState); + } + + + @Nullable + @Override + public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) { + viewModelBindingHelper.onCreate(this, savedInstanceState, this); + return viewModelBindingHelper.getBinding().getRoot(); + } + + + @Override + public void onResume() { + super.onResume(); + viewModelBindingHelper.onResume(); + } + + + @Override + public void onPause() { + super.onPause(); + viewModelBindingHelper.onPause(); + } + + + @Override + public void onDestroyView() { + viewModelBindingHelper.onDestroyView(this); + super.onDestroyView(); + } + + + @Override + public void onDestroy() { + viewModelBindingHelper.onDestroy(this); + super.onDestroy(); + } + + + @Nullable + @Override + public Bundle getBundle() { + return getArguments(); + } + + + @Override + public void onSaveInstanceState(@NonNull final Bundle outState) { + viewModelBindingHelper.onSaveInstanceState(outState); + super.onSaveInstanceState(outState); + } + + + @Override + public Context getContext() { + return getActivity(); + } + + + public T getBinding() { + return viewModelBindingHelper.getBinding(); + } + + + @Override + public void onActivityResult(final int requestCode, final int resultCode, final Intent data) { + super.onActivityResult(requestCode, resultCode, data); + viewModelBindingHelper.onActivityResult(requestCode, resultCode, data); + } + + + @Override + public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + viewModelBindingHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + + @Override + public void onViewModelInitialized(final S viewModel) { + + } + + + @Nullable + public S getViewModel() { + return viewModelBindingHelper.getViewModel(); + } + + + protected void setupViewModel(@LayoutRes final int layoutResourceId, final Class viewModelClass) { + viewModelBindingHelper.setup(layoutResourceId, viewModelClass); + } +}