From 70b7a4e795329c3960c9a5314b33ee31058df98b Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Tue, 31 Aug 2021 21:36:58 -0700 Subject: [PATCH] Makes DashboardFragment use its ViewModel --- .../ui/dashboard/DashboardFragment.java | 24 +----------- .../ui/dashboard/DashboardViewModel.java | 38 +++++++++++++++---- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardFragment.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardFragment.java index ae5ecb7..440422a 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardFragment.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardFragment.java @@ -21,15 +21,12 @@ import com.majinnaibu.monstercards.utils.Logger; import java.util.List; -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; -import io.reactivex.rxjava3.schedulers.Schedulers; -import io.reactivex.rxjava3.subscribers.DisposableSubscriber; - public class DashboardFragment extends MCFragment { private DashboardViewModel mViewModel; private ViewHolder mHolder; private DashboardRecyclerViewAdapter mAdapter; + @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mViewModel = new ViewModelProvider(this).get(DashboardViewModel.class); @@ -38,25 +35,6 @@ public class DashboardFragment extends MCFragment { setupRecyclerView(mHolder.list); - getMonsterRepository() - .getMonsters() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new DisposableSubscriber>() { - @Override - public void onNext(List monsters) { - mViewModel.setMonsters(monsters); - } - - @Override - public void onError(Throwable t) { - } - - @Override - public void onComplete() { - } - }); - return root; } diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardViewModel.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardViewModel.java index 98b6711..b09de6e 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardViewModel.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/dashboard/DashboardViewModel.java @@ -1,26 +1,50 @@ package com.majinnaibu.monstercards.ui.dashboard; +import android.app.Application; + +import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.ViewModel; +import com.majinnaibu.monstercards.AppDatabase; import com.majinnaibu.monstercards.models.Monster; import java.util.ArrayList; import java.util.List; -public class DashboardViewModel extends ViewModel { +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.schedulers.Schedulers; +import io.reactivex.rxjava3.subscribers.DisposableSubscriber; + +public class DashboardViewModel extends AndroidViewModel { + private final AppDatabase mDB; private final MutableLiveData> mMonsters; - public DashboardViewModel() { + public DashboardViewModel(Application application) { + super(application); + mDB = AppDatabase.getInstance(application); mMonsters = new MutableLiveData<>(new ArrayList<>()); + mDB.monsterDAO() + .getAll() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new DisposableSubscriber>() { + @Override + public void onNext(List monsters) { + mMonsters.setValue(monsters); + } + + @Override + public void onError(Throwable t) { + } + + @Override + public void onComplete() { + } + }); } public LiveData> getMonsters() { return mMonsters; } - - public void setMonsters(List monsters) { - mMonsters.setValue(monsters); - } }