Merge branch 'features/loading' into develop

This commit is contained in:
GME 2019-04-17 22:08:41 +02:00
commit 3d35d34bd8
29 changed files with 200 additions and 171 deletions

View file

@ -1,11 +1,5 @@
package monnethic.mobile.database;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.math.BigInteger;
import java.util.Date;
public class Transaction {
private int transactionId;
private long transactionDate;

View file

@ -1,11 +1,5 @@
package monnethic.mobile.database;
import java.util.Date;
/**
* Created by Guillaume on 15/04/2018.
*/
//Class User which represent an User for api rest
public class User {
private int user_id;

View file

@ -3,18 +3,14 @@ package monnethic.mobile.homepage;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.database.User;
public class HomepageActivity extends AppCompatActivity {
@Override

View file

@ -2,11 +2,8 @@ package monnethic.mobile.homepage;
import android.os.AsyncTask;
import android.widget.EditText;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import monnethic.mobile.restApi.Config;
import monnethic.mobile.restApi.UserApiHandler;
public class InputController {

View file

@ -1,5 +1,6 @@
package monnethic.mobile.homepage;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
@ -69,6 +70,17 @@ public class LoginActivity extends AppCompatActivity {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
ProgressDialog progDailog = new ProgressDialog(LoginActivity.this);
progDailog.setMessage("Login...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected void onPostExecute(JSONObject jsonObject) {
try{

View file

@ -1,5 +1,6 @@
package monnethic.mobile.homepage;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
@ -123,6 +124,17 @@ public class RegisterActivity extends AppCompatActivity {
Context mContext;
private UserRegisterTask(final Context context){mContext=context;}
@Override
protected void onPreExecute() {
super.onPreExecute();
ProgressDialog progDailog = new ProgressDialog(RegisterActivity.this);
progDailog.setMessage("Register...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected void onPostExecute(JSONObject jsonObject){
try{

View file

@ -9,15 +9,12 @@ import android.os.Bundle;
import android.util.SparseArray;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import com.google.android.gms.vision.CameraSource;
import com.google.android.gms.vision.Detector;
import com.google.android.gms.vision.barcode.Barcode;
import com.google.android.gms.vision.barcode.BarcodeDetector;
import monnethic.mobile.transaction.ApprovePayementActivity;
public class QrCodeScannerActivity extends AppCompatActivity {

View file

@ -1,7 +1,6 @@
package monnethic.mobile.restApi;
import android.util.Log;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.DataOutputStream;

View file

@ -1,13 +1,10 @@
package monnethic.mobile.restApi;
import android.util.Log;
import org.json.JSONObject;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import monnethic.mobile.transaction.SendingTransaction;
public class TransactionApiHandler {

View file

@ -1,14 +1,10 @@
package monnethic.mobile.restApi;
import android.util.Log;
import org.json.JSONObject;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import monnethic.mobile.database.User;
public class UserApiHandler {
@ -62,6 +58,8 @@ public class UserApiHandler {
jsonReturn.put("status",200);
jsonReturn.put("user_hash",u.getUser_hash());
//jsonReturn.put("session_id",String.valueOf(jsonObject.getString("session_id"))); //TODO
jsonReturn.put("session_id",String.valueOf(0));
return jsonReturn;

View file

@ -2,12 +2,10 @@ package monnethic.mobile.restApi;
import org.json.JSONArray;
import org.json.JSONObject;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import monnethic.mobile.wallet.Wallet;
public class WalletApiHandler {

View file

@ -1,4 +1,6 @@
package monnethic.mobile.search;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
@ -6,7 +8,6 @@ import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.example.monnthic.monnethicmobile.R;
import java.util.ArrayList;
import monnethic.mobile.restApi.WalletApiHandler;
@ -53,6 +54,23 @@ public class DisplayWalletSearch extends AppCompatActivity {
private class SearchWalletTask extends AsyncTask<String,String,ArrayList<Wallet>> {
ProgressDialog progDailog = new ProgressDialog(DisplayWalletSearch.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
progDailog.setMessage("Searching user wallets...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected void onPostExecute(ArrayList<Wallet> listWallet) {
progDailog.dismiss();
}
@Override
protected ArrayList<Wallet> doInBackground(String... strings) {
ArrayList<Wallet> walletsList = new ArrayList<>();

View file

@ -1,5 +1,6 @@
package monnethic.mobile.search;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
@ -8,22 +9,11 @@ import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import com.google.gson.JsonObject;
import com.j256.ormlite.stmt.query.In;
import org.json.JSONObject;
import java.util.ArrayList;
import monnethic.mobile.database.User;
import monnethic.mobile.homepage.InputController;
import monnethic.mobile.restApi.UserApiHandler;
import monnethic.mobile.restApi.WalletApiHandler;
import monnethic.mobile.wallet.Wallet;
public class SearchUser extends AppCompatActivity {
EditText emailAddress;
@ -80,6 +70,17 @@ public class SearchUser extends AppCompatActivity {
Context mContext;
private SearchUserTask(final Context context){mContext=context;}
@Override
protected void onPreExecute() {
super.onPreExecute();
ProgressDialog progDailog = new ProgressDialog(SearchUser.this);
progDailog.setMessage("Searching user...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected void onPostExecute(User user) {
try{

View file

@ -1,5 +1,6 @@
package monnethic.mobile.transaction;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
@ -83,6 +84,17 @@ public class ApprovePayementActivity extends AppCompatActivity {
}
private class TransactionTask extends AsyncTask<SendingTransaction,String,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
ProgressDialog progDailog = new ProgressDialog(ApprovePayementActivity.this);
progDailog.setMessage("Sending transaction...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected String doInBackground(SendingTransaction... sendingTransactions) {
try{

View file

@ -7,9 +7,7 @@ import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.qrcode.QrCodeScannerActivity;
public class MakePayementActivity extends AppCompatActivity {

View file

@ -7,9 +7,7 @@ import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.qrcode.QrCodeActivity;
public class ReceivePayementActivity extends AppCompatActivity {

View file

@ -1,5 +1,6 @@
package monnethic.mobile.transaction;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
@ -10,7 +11,6 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.homepage.InputController;
import monnethic.mobile.restApi.TransactionApiHandler;
import monnethic.mobile.search.SearchUser;
@ -118,6 +118,17 @@ public class TransactionActivity extends AppCompatActivity {
private class TransactionTask extends AsyncTask<SendingTransaction,String,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
ProgressDialog progDailog = new ProgressDialog(TransactionActivity.this);
progDailog.setMessage("Sending transaction...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected String doInBackground(SendingTransaction... sendingTransactions) {
try{

View file

@ -7,23 +7,9 @@ import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import monnethic.mobile.database.User;
import monnethic.mobile.restApi.Config;
import monnethic.mobile.restApi.HttpCallHandler;
import monnethic.mobile.restApi.WalletApiHandler;
import monnethic.mobile.transaction.MakePayementActivity;
import monnethic.mobile.transaction.ReceivePayementActivity;
@ -69,6 +55,7 @@ public class UserAccountActivity extends AppCompatActivity {
receivePayement();
}
});
buttonSettings.setVisibility(View.GONE);
buttonSettings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

View file

@ -1,5 +1,6 @@
package monnethic.mobile.wallet;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
@ -9,9 +10,7 @@ import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.restApi.WalletApiHandler;
import monnethic.mobile.user.UserAccountActivity;
@ -59,6 +58,17 @@ public class CreateWalletActivity extends AppCompatActivity {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
ProgressDialog progDailog = new ProgressDialog(CreateWalletActivity.this);
progDailog.setMessage("Creating...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected void onPostExecute(Wallet w) {
try{

View file

@ -3,15 +3,11 @@ package monnethic.mobile.wallet;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.transaction.TransactionActivity;
public class HomeWalletActivity extends AppCompatActivity {
private String user_hash;
private String user_password;

View file

@ -1,15 +1,14 @@
package monnethic.mobile.wallet;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import java.util.ArrayList;
import monnethic.mobile.restApi.WalletApiHandler;
@ -63,7 +62,18 @@ public class SelectWalletActivity extends AppCompatActivity {
}
//AsyncTask to get user wallets
static private class getUserWalletTask extends AsyncTask<String,String,ArrayList<Wallet>> {
private class getUserWalletTask extends AsyncTask<String,ArrayList<Wallet>,ArrayList<Wallet>> {
ProgressDialog progDailog = new ProgressDialog(SelectWalletActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
progDailog.setMessage("Searching...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected ArrayList<Wallet> doInBackground(String... params) {
ArrayList<Wallet> walletsList = new ArrayList<>();
@ -75,6 +85,11 @@ public class SelectWalletActivity extends AppCompatActivity {
}
return walletsList;
}
@Override
protected void onPostExecute(ArrayList<Wallet> listWallet) {
progDailog.dismiss();
}
}
@Override

View file

@ -6,9 +6,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.example.monnthic.monnethicmobile.R;
import java.util.ArrayList;
public class WalletAdapter extends ArrayAdapter<Wallet> {
@ -29,7 +27,7 @@ public class WalletAdapter extends ArrayAdapter<Wallet> {
TextView wallet_balance = convertView.findViewById(R.id.wallet_balance);
ViewGroup.LayoutParams params = convertView.getLayoutParams();
params.height = 300;
params.height = 270;
convertView.setLayoutParams(params);
wallet_hash.setText(wallet.getWallet_hash());

View file

@ -7,10 +7,7 @@ import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.transaction.TransactionActivity;
public class WalletPresenterActivity extends AppCompatActivity {

View file

@ -6,13 +6,20 @@
android:layout_height="match_parent"
tools:context="monnethic.mobile.wallet.HomeWalletActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/buttonCreateWallet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="220dp"
android:layout_marginEnd="32dp"
android:text="CREATE WALLET"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -22,11 +29,11 @@
android:id="@+id/buttonSelectWallet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginEnd="32dp"
android:layout_marginBottom="220dp"
android:layout_marginTop="50dp"
android:text="SELECT WALLET"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>

View file

@ -29,22 +29,12 @@
android:id="@+id/login"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_above="@+id/versionApp"
android:layout_alignStart="@+id/register"
android:layout_gravity="center"
android:layout_marginStart="0dp"
android:layout_marginBottom="104dp"
android:text="LOGIN" />
<TextView
android:id="@+id/versionApp"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:text="version v0.1"
android:textAlignment="center" />
android:layout_marginStart="-1dp"
android:layout_marginBottom="99dp"
android:text="LOGIN" />
<ImageView
android:id="@+id/imageView"
@ -52,6 +42,6 @@
android:layout_height="210dp"
android:layout_below="@+id/welcomeText"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_marginTop="51dp"
app:srcCompat="@drawable/newlogo" />
</RelativeLayout>

View file

@ -8,33 +8,30 @@
<Button
android:id="@+id/buttonSendWithAddress"
android:layout_width="141dp"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="160dp"
android:layout_marginBottom="150dp"
android:text="SEND TO ADDRESS"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintHorizontal_bias="0.50"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.601" />
app:layout_constraintVertical_bias="0.50" />
<Button
android:id="@+id/buttonScanQr"
android:layout_width="141dp"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="160dp"
android:layout_marginBottom="150dp"
android:text="SCAN QR CODE"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintHorizontal_bias="0.50"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.863" />
app:layout_constraintTop_toBottomOf="@+id/buttonSendWithAddress"
app:layout_constraintVertical_bias="0.50" />
</android.support.constraint.ConstraintLayout>

View file

@ -16,6 +16,7 @@
<ListView
android:id="@+id/listViewWallet"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:dividerHeight="5dp" />

View file

@ -3,14 +3,6 @@
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/appVersion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="version v0.1" />
<Button
android:id="@+id/buttonSettings"
android:layout_width="100dp"
@ -23,9 +15,8 @@
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/buttonSettings"
android:layout_centerHorizontal="true"
android:layout_marginTop="1dp"
android:layout_marginTop="70dp"
android:text="WALLET"
android:textSize="15sp"
android:textStyle="bold" />
@ -59,12 +50,12 @@
<TextView
android:id="@+id/balanceView"
android:inputType="none"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_alignParentTop="true"
android:layout_below="@+id/textBalance"
android:layout_centerHorizontal="true"
android:layout_marginTop="215dp"
android:layout_marginTop="15dp"
android:inputType="none"
android:textAlignment="center"
android:textSize="18sp" />
@ -72,9 +63,9 @@
android:id="@+id/textBalance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_below="@+id/userHash"
android:layout_centerHorizontal="true"
android:layout_marginTop="177dp"
android:layout_marginTop="50dp"
android:text="BALANCE"
android:textAlignment="center"
android:textSize="20sp"
@ -82,14 +73,14 @@
<TextView
android:id="@+id/userHash"
android:textIsSelectable="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView4"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="30dp"
android:layout_marginTop="15dp"
android:layout_marginRight="30dp"
android:layout_marginTop="90dp"
android:textIsSelectable="true"
android:textSize="12sp" />

View file

@ -9,37 +9,53 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/wallet_hash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="20dp"
android:layout_marginTop="5dp"
android:text="Wallet Hash"
android:textAppearance="@style/TextAppearance.AppCompat"
android:textSize="10sp" />
android:textSize="11sp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_marginTop="5dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/wallet_type"
android:layout_alignParentStart="true"
android:layout_marginStart="28dp"
android:layout_marginTop="0dp"
android:text="Wallet :"
android:textSize="13sp" />
<TextView
android:id="@+id/wallet_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/wallet_hash"
android:layout_alignStart="@+id/wallet_balance"
android:layout_marginStart="0dp"
android:layout_marginTop="9dp"
android:layout_alignStart="@+id/textView2"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="96dp"
android:layout_marginTop="0dp"
android:text="Wallet Type"
android:textSize="12sp" />
android:textSize="13sp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_marginTop="5dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/wallet_balance"
@ -47,29 +63,21 @@
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="112dp"
android:layout_marginTop="52dp"
android:layout_marginStart="96dp"
android:layout_marginTop="0dp"
android:text="Wallet Balance"
android:textSize="12sp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/wallet_type"
android:layout_marginEnd="-85dp"
android:layout_toStartOf="@+id/wallet_balance"
android:text="Wallet :"
android:textSize="12sp" />
android:textSize="13sp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/textView2"
android:layout_alignTop="@+id/wallet_balance"
android:layout_alignParentStart="true"
android:layout_marginStart="28dp"
android:layout_marginTop="0dp"
android:text="Balance :"
android:textSize="12sp" />
android:textSize="13sp" />
</RelativeLayout>