- Cleaned unused imports in various Classes.

- Simplified BalancesFragment by removing a couple of unnecessary files and merging its funcionality into more compact classes/layouts
This commit is contained in:
Severiano Jaramillo 2018-10-16 11:39:39 -05:00
parent ed7dc5424e
commit 91bc799310
9 changed files with 54 additions and 188 deletions

View file

@ -3,11 +3,11 @@ package cy.agorise.crystalwallet.fragments;
import android.arch.lifecycle.LiveData; import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer; import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.TabLayout; import android.support.annotation.NonNull;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -19,22 +19,20 @@ import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import cy.agorise.crystalwallet.R; import cy.agorise.crystalwallet.R;
import cy.agorise.crystalwallet.models.CryptoNetBalance; import cy.agorise.crystalwallet.models.CryptoNetBalance;
import cy.agorise.crystalwallet.viewmodels.CryptoCoinBalanceListViewModel;
import cy.agorise.crystalwallet.viewmodels.CryptoNetBalanceListViewModel; import cy.agorise.crystalwallet.viewmodels.CryptoNetBalanceListViewModel;
import cy.agorise.crystalwallet.views.CryptoNetBalanceListView; import cy.agorise.crystalwallet.views.CryptoNetBalanceListAdapter;
public class BalanceFragment extends Fragment { public class BalanceFragment extends Fragment {
CryptoNetBalanceListViewModel cryptoNetBalanceListViewModel; CryptoNetBalanceListViewModel cryptoNetBalanceListViewModel;
@BindView(R.id.vCryptoNetBalanceListView) @BindView(R.id.tvNoBalances)
CryptoNetBalanceListView vCryptoNetBalanceListView; TextView tvNoBalances;
@BindView(R.id.tvNobalances)
public TextView tvNobalances;
@BindView(R.id.rvBalances)
RecyclerView rvBalances;
CryptoNetBalanceListAdapter balancesAdapter;
public BalanceFragment() { public BalanceFragment() {
// Required empty public constructor // Required empty public constructor
@ -53,29 +51,32 @@ public class BalanceFragment extends Fragment {
} }
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
// Inflate the layout for this fragment // Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_balance, container, false); View view = inflater.inflate(R.layout.fragment_balance, container, false);
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
cryptoNetBalanceListViewModel = ViewModelProviders.of(this).get(CryptoNetBalanceListViewModel.class); // Configure RecyclerView and its adapter
LiveData<List<CryptoNetBalance>> cryptoNetBalanceData = cryptoNetBalanceListViewModel.getCryptoNetBalanceList(); rvBalances.setLayoutManager(new LinearLayoutManager(getContext()));
vCryptoNetBalanceListView.setData(null, this); balancesAdapter = new CryptoNetBalanceListAdapter(this);
rvBalances.setAdapter(balancesAdapter);
final Fragment fragment = this; //Prevents the UI from an infinite scrolling of balances
rvBalances.setNestedScrollingEnabled(false);
cryptoNetBalanceListViewModel = ViewModelProviders.of(this).get(CryptoNetBalanceListViewModel.class);
final LiveData<List<CryptoNetBalance>> cryptoNetBalanceData = cryptoNetBalanceListViewModel.getCryptoNetBalanceList();
cryptoNetBalanceData.observe(this, new Observer<List<CryptoNetBalance>>() { cryptoNetBalanceData.observe(this, new Observer<List<CryptoNetBalance>>() {
@Override @Override
public void onChanged(List<CryptoNetBalance> cryptoNetBalances) { public void onChanged(List<CryptoNetBalance> cryptoNetBalances) {
vCryptoNetBalanceListView.setData(cryptoNetBalances, fragment); balancesAdapter.submitList(cryptoNetBalances);
final int size = cryptoNetBalances.size(); if(cryptoNetBalances != null && cryptoNetBalances.size() > 0) {
if(size==0){ tvNoBalances.setVisibility(View.INVISIBLE);
tvNobalances.setVisibility(View.VISIBLE); } else {
} tvNoBalances.setVisibility(View.VISIBLE);
else{
tvNobalances.setVisibility(View.INVISIBLE);
} }
} }
}); });

View file

@ -9,7 +9,6 @@ import android.arch.paging.PagedList;
import cy.agorise.crystalwallet.dao.CrystalDatabase; import cy.agorise.crystalwallet.dao.CrystalDatabase;
import cy.agorise.crystalwallet.enums.CryptoNet; import cy.agorise.crystalwallet.enums.CryptoNet;
import cy.agorise.crystalwallet.models.Contact; import cy.agorise.crystalwallet.models.Contact;
import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
/** /**
* Created by Henry Varona on 1/17/2018. * Created by Henry Varona on 1/17/2018.

View file

@ -1,6 +1,7 @@
package cy.agorise.crystalwallet.views; package cy.agorise.crystalwallet.views;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.recyclerview.extensions.ListAdapter; import android.support.v7.recyclerview.extensions.ListAdapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -22,22 +23,23 @@ public class CryptoNetBalanceListAdapter extends ListAdapter<CryptoNetBalance, C
/* /*
* A LifecycleOwner fragment that will be used to call the ViewModelProviders * A LifecycleOwner fragment that will be used to call the ViewModelProviders
*/ */
Fragment fragment; private Fragment fragment;
public CryptoNetBalanceListAdapter(Fragment fragment) { public CryptoNetBalanceListAdapter(Fragment fragment) {
super(CryptoNetBalance.DIFF_CALLBACK); super(CryptoNetBalance.DIFF_CALLBACK);
this.fragment = fragment; this.fragment = fragment;
} }
@NonNull
@Override @Override
public CryptoNetBalanceViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public CryptoNetBalanceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.balance_list_item,parent,false); View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.balance_list_item,parent,false);
return new CryptoNetBalanceViewHolder(v, fragment); return new CryptoNetBalanceViewHolder(v, fragment);
} }
@Override @Override
public void onBindViewHolder(CryptoNetBalanceViewHolder holder, int position) { public void onBindViewHolder(@NonNull CryptoNetBalanceViewHolder holder, int position) {
CryptoNetBalance balance = getItem(position); CryptoNetBalance balance = getItem(position);
if (balance != null) { if (balance != null) {
holder.bindTo(balance); holder.bindTo(balance);

View file

@ -1,107 +0,0 @@
package cy.agorise.crystalwallet.views;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RelativeLayout;
import java.util.List;
import cy.agorise.crystalwallet.R;
import cy.agorise.crystalwallet.models.CryptoNetBalance;
import cy.agorise.crystalwallet.viewmodels.CryptoCoinBalanceListViewModel;
import cy.agorise.crystalwallet.viewmodels.CryptoNetBalanceListViewModel;
/**
* Created by Henry Varona on 10/9/2017.
*
* A view that show the list of crypto net balances of the user.
* Each crypto net has its own list of crypto coin balances.
*
* With this view the user can see all of his/her account balances of
* every crypto coin.
*/
public class CryptoNetBalanceListView extends RelativeLayout {
LayoutInflater mInflater;
/*
* The root container of this view. Its a relative layout
*/
View rootView;
/*
* The list view that holds every crypto net balance item
*/
RecyclerView listView;
/*
* The adapter for the previous list view
*/
CryptoNetBalanceListAdapter listAdapter;
/*
* One of three constructors needed to be inflated from a layout
*/
public CryptoNetBalanceListView(Context context){
super(context);
this.mInflater = LayoutInflater.from(context);
init();
}
/*
* One of three constructors needed to be inflated from a layout
*/
public CryptoNetBalanceListView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mInflater = LayoutInflater.from(context);
init();
}
/*
* One of three constructors needed to be inflated from a layout
*/
public CryptoNetBalanceListView(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
this.mInflater = LayoutInflater.from(context);
init();
}
/**
* Initialize the list view holding the crypto net balances
*/
public void init(){
//inflates the corresponding view
rootView = mInflater.inflate(R.layout.balance_list, this, true);
this.listView = rootView.findViewById(R.id.balanceListView);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this.getContext());
this.listView.setLayoutManager(linearLayoutManager);
//Prevents the UI from an infinite scrolling of balances
this.listView.setNestedScrollingEnabled(false);
}
/*main_content
* Sets the data for the list of balances.
*
* @param data the list of crypto net balances that will be show to the user
* @param fragment a LifecycleOwner fragment to allow the inners views to use the ViewModels
*/
public void setData(List<CryptoNetBalance> data, Fragment fragment){
//initializes the list adapter
if (this.listAdapter == null) {
this.listAdapter = new CryptoNetBalanceListAdapter(fragment);
this.listView.setAdapter(this.listAdapter);
}
//sets the data of the list adapter
if (data != null) {
this.listAdapter.submitList(data);
}
}
}

View file

@ -1,15 +1,12 @@
package cy.agorise.crystalwallet.views; package cy.agorise.crystalwallet.views;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.arch.lifecycle.LifecycleOwner; import android.arch.lifecycle.LifecycleOwner;
import android.arch.lifecycle.LiveData; import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer; import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.arch.paging.PagedList;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.View; import android.view.View;
@ -21,16 +18,11 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cy.agorise.crystalwallet.R; import cy.agorise.crystalwallet.R;
import cy.agorise.crystalwallet.activities.SendTransactionActivity;
import cy.agorise.crystalwallet.dao.CrystalDatabase; import cy.agorise.crystalwallet.dao.CrystalDatabase;
import cy.agorise.crystalwallet.fragments.ReceiveTransactionFragment; import cy.agorise.crystalwallet.fragments.ReceiveTransactionFragment;
import cy.agorise.crystalwallet.fragments.SendTransactionFragment; import cy.agorise.crystalwallet.fragments.SendTransactionFragment;
import cy.agorise.crystalwallet.models.CryptoCoinBalance; import cy.agorise.crystalwallet.models.CryptoCoinBalance;
import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
import cy.agorise.crystalwallet.models.CryptoCurrencyEquivalence;
import cy.agorise.crystalwallet.models.CryptoNetBalance; import cy.agorise.crystalwallet.models.CryptoNetBalance;
import cy.agorise.crystalwallet.models.GeneralSetting; import cy.agorise.crystalwallet.models.GeneralSetting;
import cy.agorise.crystalwallet.viewmodels.CryptoCoinBalanceListViewModel; import cy.agorise.crystalwallet.viewmodels.CryptoCoinBalanceListViewModel;
@ -45,7 +37,7 @@ public class CryptoNetBalanceViewHolder extends RecyclerView.ViewHolder {
/* /*
* the view holding the icon of the crypto net * the view holding the icon of the crypto net
*/ */
ImageView cryptoNetIcon; private ImageView cryptoNetIcon;
/* /*
* the view holding the name of the crypto net * the view holding the name of the crypto net
@ -97,12 +89,12 @@ public class CryptoNetBalanceViewHolder extends RecyclerView.ViewHolder {
this.cryptoNetAccountId = -1; this.cryptoNetAccountId = -1;
//TODO: use ButterKnife to load the views //TODO: use ButterKnife to load the views
cryptoNetIcon = (ImageView) itemView.findViewById(R.id.ivCryptoNetIcon); cryptoNetIcon = itemView.findViewById(R.id.ivCryptoNetIcon);
cryptoNetName = (TextView) itemView.findViewById(R.id.tvCryptoNetName); cryptoNetName = itemView.findViewById(R.id.tvCryptoNetName);
cryptoNetEquivalentTotal = (TextView) itemView.findViewById(R.id.tvCryptoNetEquivalentTotal); cryptoNetEquivalentTotal = itemView.findViewById(R.id.tvCryptoNetEquivalentTotal);
cryptoCoinBalanceListView = (CryptoCoinBalanceListView) itemView.findViewById(R.id.cryptoCoinBalancesListView); cryptoCoinBalanceListView = itemView.findViewById(R.id.cryptoCoinBalancesListView);
btnSendFromThisAccount = (Button) itemView.findViewById(R.id.btnSendFromThisAccount); btnSendFromThisAccount = itemView.findViewById(R.id.btnSendFromThisAccount);
btnReceiveToThisAccount = (Button) itemView.findViewById(R.id.btnReceiveWithThisAccount); btnReceiveToThisAccount = itemView.findViewById(R.id.btnReceiveWithThisAccount);
//Setting the send button //Setting the send button
btnSendFromThisAccount.setOnClickListener(new View.OnClickListener() { btnSendFromThisAccount.setOnClickListener(new View.OnClickListener() {
@ -211,9 +203,9 @@ public class CryptoNetBalanceViewHolder extends RecyclerView.ViewHolder {
this.cryptoNetAccountId = balance.getAccountId(); this.cryptoNetAccountId = balance.getAccountId();
/* /*
* The first letter should be in mayus * The first letter should be in Uppercase
* */ * */
final String crypto = balance.getCryptoNet().getLabel().toString().toLowerCase(); final String crypto = balance.getCryptoNet().getLabel().toLowerCase();
final String upperString = crypto.substring(0,1).toUpperCase() + crypto.substring(1); final String upperString = crypto.substring(0,1).toUpperCase() + crypto.substring(1);
cryptoNetName.setText(upperString); cryptoNetName.setText(upperString);
@ -225,7 +217,7 @@ public class CryptoNetBalanceViewHolder extends RecyclerView.ViewHolder {
cryptoCoinBalanceListView.setData(null, this); cryptoCoinBalanceListView.setData(null, this);
//Observes the livedata, so any of its changes on the database will be reloaded here //Observes the LiveData, so any of its changes on the database will be reloaded here
cryptoCoinBalanceData.observe((LifecycleOwner)this.itemView.getContext(), new Observer<List<CryptoCoinBalance>>() { cryptoCoinBalanceData.observe((LifecycleOwner)this.itemView.getContext(), new Observer<List<CryptoCoinBalance>>() {
@Override @Override
public void onChanged(List<CryptoCoinBalance> cryptoCoinBalances) { public void onChanged(List<CryptoCoinBalance> cryptoCoinBalances) {

View file

@ -1,24 +1,13 @@
package cy.agorise.crystalwallet.views; package cy.agorise.crystalwallet.views;
import android.arch.lifecycle.LiveData;
import android.arch.paging.PagedListAdapter; import android.arch.paging.PagedListAdapter;
import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
import java.util.List;
import cy.agorise.crystalwallet.R; import cy.agorise.crystalwallet.R;
import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
import cy.agorise.crystalwallet.models.CryptoCoinTransactionExtended; import cy.agorise.crystalwallet.models.CryptoCoinTransactionExtended;
/** /**
@ -39,8 +28,9 @@ public class TransactionListAdapter extends PagedListAdapter<CryptoCoinTransacti
this.fragment = fragment; this.fragment = fragment;
} }
@NonNull
@Override @Override
public TransactionViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public TransactionViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.transaction_list_item,parent,false); View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.transaction_list_item,parent,false);
@ -48,7 +38,7 @@ public class TransactionListAdapter extends PagedListAdapter<CryptoCoinTransacti
} }
@Override @Override
public void onBindViewHolder(TransactionViewHolder holder, int position) { public void onBindViewHolder(@NonNull TransactionViewHolder holder, int position) {
CryptoCoinTransactionExtended transaction = getItem(position); CryptoCoinTransactionExtended transaction = getItem(position);
if (transaction != null) { if (transaction != null) {
holder.bindTo(transaction); holder.bindTo(transaction);

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/balanceListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

View file

@ -1,23 +1,25 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="cy.agorise.crystalwallet.fragments.BalanceFragment"> tools:context="cy.agorise.crystalwallet.fragments.BalanceFragment">
<TextView <TextView
android:id="@+id/tvNobalances" android:id="@+id/tvNoBalances"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/You_dont_have_balances" android:text="@string/You_dont_have_balances"
android:textColor="@color/gray" android:textColor="@color/gray"
android:layout_marginTop="190dp" android:layout_marginTop="190dp"
android:layout_marginLeft="90dp" android:layout_marginStart="100dp"
android:textSize="15dp" /> android:textSize="15sp" />
<cy.agorise.crystalwallet.views.CryptoNetBalanceListView <android.support.v7.widget.RecyclerView
android:id="@+id/rvBalances"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:listitem="@layout/balance_list_item"
android:id="@+id/vCryptoNetBalanceListView" /> tools:itemCount="1"/>
</FrameLayout> </FrameLayout>

View file

@ -10,9 +10,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/You_dont_have_contacts" android:text="@string/You_dont_have_contacts"
android:textColor="@color/gray" android:textColor="@color/gray"
android:textSize="15sp"
android:layout_marginTop="190dp" android:layout_marginTop="190dp"
android:layout_marginStart="100dp" android:layout_marginStart="100dp" />
android:textSize="15sp" />
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/rvContacts" android:id="@+id/rvContacts"