Makes DashboardFragment use its ViewModel

This commit is contained in:
2021-08-31 21:36:58 -07:00
committed by Tom Hicks
parent 8b4d9b6b17
commit 70b7a4e795
2 changed files with 32 additions and 30 deletions

View File

@@ -21,15 +21,12 @@ import com.majinnaibu.monstercards.utils.Logger;
import java.util.List; 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 { public class DashboardFragment extends MCFragment {
private DashboardViewModel mViewModel; private DashboardViewModel mViewModel;
private ViewHolder mHolder; private ViewHolder mHolder;
private DashboardRecyclerViewAdapter mAdapter; private DashboardRecyclerViewAdapter mAdapter;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) { ViewGroup container, Bundle savedInstanceState) {
mViewModel = new ViewModelProvider(this).get(DashboardViewModel.class); mViewModel = new ViewModelProvider(this).get(DashboardViewModel.class);
@@ -38,25 +35,6 @@ public class DashboardFragment extends MCFragment {
setupRecyclerView(mHolder.list); setupRecyclerView(mHolder.list);
getMonsterRepository()
.getMonsters()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableSubscriber<List<Monster>>() {
@Override
public void onNext(List<Monster> monsters) {
mViewModel.setMonsters(monsters);
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
return root; return root;
} }

View File

@@ -1,26 +1,50 @@
package com.majinnaibu.monstercards.ui.dashboard; package com.majinnaibu.monstercards.ui.dashboard;
import android.app.Application;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.majinnaibu.monstercards.AppDatabase;
import com.majinnaibu.monstercards.models.Monster; import com.majinnaibu.monstercards.models.Monster;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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<List<Monster>> mMonsters; private final MutableLiveData<List<Monster>> mMonsters;
public DashboardViewModel() { public DashboardViewModel(Application application) {
super(application);
mDB = AppDatabase.getInstance(application);
mMonsters = new MutableLiveData<>(new ArrayList<>()); mMonsters = new MutableLiveData<>(new ArrayList<>());
mDB.monsterDAO()
.getAll()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableSubscriber<List<Monster>>() {
@Override
public void onNext(List<Monster> monsters) {
mMonsters.setValue(monsters);
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
} }
public LiveData<List<Monster>> getMonsters() { public LiveData<List<Monster>> getMonsters() {
return mMonsters; return mMonsters;
} }
public void setMonsters(List<Monster> monsters) {
mMonsters.setValue(monsters);
}
} }