Skip to content

Commit

Permalink
Improve Dagger Usage
Browse files Browse the repository at this point in the history
  • Loading branch information
Volkan Şahin committed Jan 15, 2019
1 parent 8036a6c commit ad2dfdd
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,4 @@ public abstract class AppModule {
@Binds
@Singleton
abstract Application application(MoneycimApp app);

@Binds
abstract ViewModelProvider.Factory bindViewModelFactory(ViewModelFactory viewModelFactory);
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.vsahin.moneycim.R;
import com.vsahin.moneycim.View.Base.BaseFragment;
import com.vsahin.moneycim.View.OCR_Scan_Receipt.OcrCaptureActivity;
import com.vsahin.moneycim.ViewModelFactory;

import java.util.ArrayList;
import java.util.Date;
Expand All @@ -33,6 +34,7 @@
import androidx.appcompat.app.AlertDialog;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
Expand Down Expand Up @@ -67,8 +69,7 @@ public class AddAndEditSpendingFragment extends BaseFragment {
@BindView(R.id.delete_button)
ImageButton deleteButton;

@Inject
AddAndEditSpendingViewModel viewModel;
private AddAndEditSpendingViewModel viewModel;

private RawSpending spending;
private ArrayList<SpendingGroup> spendingGroupList;
Expand Down Expand Up @@ -99,9 +100,9 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
AndroidSupportInjection.inject(this);
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel = ViewModelProviders.of(this, viewModelFactory).get(AddAndEditSpendingViewModel.class);
subscribeSpendingGroups();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@

public class AddAndEditSpendingViewModel extends ViewModel {

SpendingRepository spendingRepository;
private SpendingRepository spendingRepository;

final public LiveData<List<SpendingGroup>> spendingGroups;
final LiveData<List<SpendingGroup>> spendingGroups;

@Inject
public AddAndEditSpendingViewModel(SpendingRepository spendingRepository) {
Expand All @@ -31,11 +31,11 @@ private LiveData<List<SpendingGroup>> getSpendingGroups() {
return spendingRepository.getSpendingGroups();
}

public void addSpending(RawSpending s){
void addSpending(RawSpending s){
spendingRepository.addSpending(s);
}

public void deleteSpending(int id){
void deleteSpending(int id){
spendingRepository.deleteSpending(id);
}
}
17 changes: 17 additions & 0 deletions app/src/main/java/com/vsahin/moneycim/View/Base/BaseFragment.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,38 @@
package com.vsahin.moneycim.View.Base;

import android.content.Context;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import dagger.android.AndroidInjection;
import dagger.android.support.AndroidSupportInjection;
import dagger.android.support.DaggerFragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.vsahin.moneycim.ViewModelFactory;

import javax.inject.Inject;

public abstract class BaseFragment extends DaggerFragment {
@Inject
protected ViewModelFactory viewModelFactory;

protected Unbinder unbinder;

@Override
public void onAttach(Context context) {
AndroidSupportInjection.inject(this);
super.onAttach(context);
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,19 @@
import com.vsahin.moneycim.View.AddAndEditSpending.AddAndEditSpendingFragment;
import com.vsahin.moneycim.View.Base.BaseFragment;
import com.vsahin.moneycim.View.MainActivity;
import com.vsahin.moneycim.ViewModelFactory;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import dagger.android.support.AndroidSupportInjection;

/**
Expand All @@ -34,8 +33,7 @@

public class SpendingListFragment extends BaseFragment implements RecyclerViewItemClickListener {

@Inject
SpendingListViewModel viewModel;
private SpendingListViewModel viewModel;

private final ArrayList<Spending> spendingList = new ArrayList<>();
private SpendingRecyclerViewAdapter adapter;
Expand All @@ -48,13 +46,6 @@ public static SpendingListFragment newInstance() {
return new SpendingListFragment();
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
AndroidSupportInjection.inject(this);
subscribeSpendings();
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand All @@ -76,6 +67,13 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel = ViewModelProviders.of(this, viewModelFactory).get(SpendingListViewModel.class);
subscribeSpendings();
}

private void subscribeSpendings() {
viewModel.spendings.observe(this, spendings -> adapter.updateItems(spendings));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
*/

public class SpendingListViewModel extends ViewModel {
SpendingRepository spendingRepository;
private SpendingRepository spendingRepository;

final LiveData<List<Spending>> spendings;

@Inject
public SpendingListViewModel(SpendingRepository spendingRepository) {
SpendingListViewModel(SpendingRepository spendingRepository) {
this.spendingRepository = spendingRepository;
spendings = getSpendings();
}
Expand All @@ -29,7 +29,7 @@ private LiveData<List<Spending>> getSpendings(){
return spendingRepository.getSpendings();
}

public void deleteSpending(int id){
void deleteSpending(int id){
spendingRepository.deleteSpending(id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@

import com.vsahin.moneycim.R;
import com.vsahin.moneycim.View.Base.BaseFragment;
import com.vsahin.moneycim.ViewModelFactory;

import javax.inject.Inject;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
Expand All @@ -26,19 +28,11 @@

public class TotalSpendingQuantityFragment extends BaseFragment {

@Inject
TotalSpendingQuantityViewModel viewModel;
private TotalSpendingQuantityViewModel viewModel;

@BindView(R.id.quantity)
TextView txtQuantity;

@Override
public void onAttach(Context context) {
super.onAttach(context);
AndroidSupportInjection.inject(this);
subscribeTotalQuantity();
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Expand All @@ -47,17 +41,25 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
return view;
}

private void subscribeTotalQuantity(){
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel = ViewModelProviders.of(this, viewModelFactory).get(TotalSpendingQuantityViewModel.class);
subscribeTotalQuantity();
}

private void subscribeTotalQuantity() {
viewModel.totalSpendingQuantity.observe(this, quantity -> {
if(quantity != null){
if(quantity != null) {
showTotalQuantityInUi(quantity, txtQuantity);
} else {
}
else {
showTotalQuantityInUi(0.0, txtQuantity);
}
});
}

private void showTotalQuantityInUi(@NonNull Double quantity, final TextView txtQuantity){
private void showTotalQuantityInUi(@NonNull Double quantity, final TextView txtQuantity) {
//round two places
quantity = Math.round(quantity * 100.0) / 100.0;
String text = getContext().getString(R.string.turkish_lira_symbol) + String.valueOf(quantity);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
public class TotalSpendingQuantityViewModel extends ViewModel {
SpendingRepository spendingRepository;

final public LiveData<Double> totalSpendingQuantity;
final LiveData<Double> totalSpendingQuantity;

@Inject
public TotalSpendingQuantityViewModel(SpendingRepository spendingRepository) {
Expand Down

0 comments on commit ad2dfdd

Please sign in to comment.