Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
meser
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Muhammad Suryono
meser
Commits
ab90d286
Commit
ab90d286
authored
Sep 03, 2020
by
Muhammad Suryono
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update payment history
parent
a18435d0
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
368 additions
and
12 deletions
+368
-12
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-1
TransactionActivity.java
...rc/main/java/com/yono/messeripos/TransactionActivity.java
+27
-1
TransactionAdapter.java
.../java/com/yono/messeripos/adapter/TransactionAdapter.java
+1
-0
PaymentPendingDaos.java
...ain/java/com/yono/messeripos/daos/PaymentPendingDaos.java
+26
-0
LocalDatabase.java
...main/java/com/yono/messeripos/database/LocalDatabase.java
+2
-0
PaymentPending.java
.../main/java/com/yono/messeripos/models/PaymentPending.java
+148
-0
PaymentPendingRepositories.java
...o/messeripos/repositories/PaymentPendingRepositories.java
+39
-0
Utils.java
app/src/main/java/com/yono/messeripos/utils/Utils.java
+18
-2
activity_history.xml
app/src/main/res/layout/activity_history.xml
+5
-6
activity_list_transaction.xml
app/src/main/res/layout/activity_list_transaction.xml
+1
-0
item_history.xml
app/src/main/res/layout/item_history.xml
+9
-2
item_pending.xml
app/src/main/res/layout/item_pending.xml
+89
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
ab90d286
...
@@ -33,11 +33,13 @@
...
@@ -33,11 +33,13 @@
android:theme=
"@style/AppTheme.appbar"
/>
android:theme=
"@style/AppTheme.appbar"
/>
<activity
<activity
android:name=
".PaymentActivity"
android:name=
".PaymentActivity"
android:theme=
"@style/AppTheme.appbar"
/>
android:theme=
"@style/AppTheme.appbar"
>
</activity>
<activity
<activity
android:name=
".CartActivity"
android:name=
".CartActivity"
android:theme=
"@style/AppTheme.appbar"
/>
android:theme=
"@style/AppTheme.appbar"
/>
<activity
android:name=
".SplashScreen"
>
<activity
android:name=
".SplashScreen"
>
<intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
...
...
app/src/main/java/com/yono/messeripos/TransactionActivity.java
View file @
ab90d286
...
@@ -5,13 +5,39 @@ import android.os.PersistableBundle;
...
@@ -5,13 +5,39 @@ import android.os.PersistableBundle;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.viewpager.widget.ViewPager
;
public
class
TransactionActivity
extends
AppCompatActivity
{
import
com.google.android.material.appbar.MaterialToolbar
;
import
com.google.android.material.tabs.TabLayout
;
import
com.yono.messeripos.adapter.TabAdapterTransaction
;
import
com.yono.messeripos.transactiontab.TransactionSuccess
;
import
java.util.Objects
;
public
class
TransactionActivity
extends
AppCompatActivity
{
private
TabAdapterTransaction
adapter
;
private
TabLayout
tabLayout
;
private
ViewPager
viewPager
;
@Override
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_list_transaction
);
setContentView
(
R
.
layout
.
activity_list_transaction
);
viewPager
=
findViewById
(
R
.
id
.
viewPager
);
tabLayout
=
findViewById
(
R
.
id
.
tabLayout
);
MaterialToolbar
toolbars
=
findViewById
(
R
.
id
.
toolbar
);
setSupportActionBar
(
toolbars
);
getSupportActionBar
().
setDisplayHomeAsUpEnabled
(
true
);
getSupportActionBar
().
setDisplayShowHomeEnabled
(
true
);
getSupportActionBar
().
setTitle
(
"All Transaction"
);
toolbars
.
setNavigationOnClickListener
(
view
->
onBackPressed
());
adapter
=
new
TabAdapterTransaction
(
getSupportFragmentManager
());
adapter
.
addFragment
(
new
TransactionSuccess
(),
"Transaction Success"
);
adapter
.
addFragment
(
new
TransactionSuccess
(),
"Transaction Pending"
);
viewPager
.
setAdapter
(
adapter
);
tabLayout
.
setupWithViewPager
(
viewPager
);
}
}
}
}
app/src/main/java/com/yono/messeripos/adapter/TransactionAdapter.java
View file @
ab90d286
...
@@ -81,6 +81,7 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.
...
@@ -81,6 +81,7 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.
itemHistoryBinding
.
setTransaction
(
paymentsModels
);
itemHistoryBinding
.
setTransaction
(
paymentsModels
);
itemHistoryBinding
.
setDate
(
utils
.
convertDate
(
paymentsModels
.
getUpdatedAt
()));
itemHistoryBinding
.
setDate
(
utils
.
convertDate
(
paymentsModels
.
getUpdatedAt
()));
itemHistoryBinding
.
cvHistory
.
setOnClickListener
(
view
->
listener
.
onShowDetail
(
paymentsModels
));
itemHistoryBinding
.
cvHistory
.
setOnClickListener
(
view
->
listener
.
onShowDetail
(
paymentsModels
));
itemHistoryBinding
.
setGrossAmount
(
utils
.
convertPrice
(
"Rp. "
,
paymentsModels
.
getGrossAmount
()));
if
(
paymentsModels
.
getTransactionStatus
().
equals
(
"Settlement"
.
toLowerCase
()))
{
if
(
paymentsModels
.
getTransactionStatus
().
equals
(
"Settlement"
.
toLowerCase
()))
{
...
...
app/src/main/java/com/yono/messeripos/daos/PaymentPendingDaos.java
0 → 100644
View file @
ab90d286
package
com
.
yono
.
messeripos
.
daos
;
import
androidx.lifecycle.LiveData
;
import
androidx.room.Insert
;
import
androidx.room.OnConflictStrategy
;
import
androidx.room.Query
;
import
androidx.room.Update
;
import
com.yono.messeripos.models.PaymentPending
;
import
com.yono.messeripos.models.ProductCartModels
;
import
java.util.List
;
public
interface
PaymentPendingDaos
{
@Query
(
"SELECT * FROM payment_pending ORDER BY id DESC"
)
public
LiveData
<
List
<
PaymentPending
>>
getAll
();
@Query
(
"SELECT * FROM payment_pending WHERE id_orders = :idOrders"
)
public
LiveData
<
List
<
PaymentPending
>>
getPaymentByIdOrder
(
String
idOrders
);
@Insert
(
onConflict
=
OnConflictStrategy
.
IGNORE
)
public
void
insertPaymentPending
(
PaymentPending
paymentPending
);
@Query
(
"UPDATE payment_pending SET id_nfc = :idNfc WHERE id = :id"
)
public
void
updateNfc
(
String
idNfc
,
long
id
);
}
app/src/main/java/com/yono/messeripos/database/LocalDatabase.java
View file @
ab90d286
...
@@ -11,6 +11,7 @@ import androidx.room.RoomDatabase;
...
@@ -11,6 +11,7 @@ import androidx.room.RoomDatabase;
import
androidx.sqlite.db.SupportSQLiteOpenHelper
;
import
androidx.sqlite.db.SupportSQLiteOpenHelper
;
import
com.yono.messeripos.daos.CartDaos
;
import
com.yono.messeripos.daos.CartDaos
;
import
com.yono.messeripos.daos.PaymentPendingDaos
;
import
com.yono.messeripos.models.ProductCartModels
;
import
com.yono.messeripos.models.ProductCartModels
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.ExecutorService
;
...
@@ -20,6 +21,7 @@ import java.util.concurrent.Executors;
...
@@ -20,6 +21,7 @@ import java.util.concurrent.Executors;
public
abstract
class
LocalDatabase
extends
RoomDatabase
{
public
abstract
class
LocalDatabase
extends
RoomDatabase
{
public
abstract
CartDaos
cartDaos
();
public
abstract
CartDaos
cartDaos
();
public
abstract
PaymentPendingDaos
paymentPendingDaos
();
private
static
volatile
LocalDatabase
INSTANCE
;
private
static
volatile
LocalDatabase
INSTANCE
;
private
static
final
int
NUMBER_OF_THREADS
=
407
;
private
static
final
int
NUMBER_OF_THREADS
=
407
;
...
...
app/src/main/java/com/yono/messeripos/models/PaymentPending.java
0 → 100644
View file @
ab90d286
package
com
.
yono
.
messeripos
.
models
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
androidx.room.Entity
;
import
androidx.room.PrimaryKey
;
import
com.google.gson.annotations.SerializedName
;
@Entity
(
tableName
=
"payment_pending"
)
public
class
PaymentPending
implements
Parcelable
{
@PrimaryKey
(
autoGenerate
=
true
)
@SerializedName
(
"id"
)
private
long
id
;
@SerializedName
(
"id_orders"
)
private
String
id_orders
;
@SerializedName
(
"transaction_time"
)
private
String
transaction_time
;
@SerializedName
(
"transaction_status"
)
private
String
transaction_status
;
@SerializedName
(
"payment_methode"
)
private
String
payment_methode
;
@SerializedName
(
"id_nfc"
)
private
String
id_nfc
;
@SerializedName
(
"gross_amount"
)
private
double
gross_amount
;
public
PaymentPending
()
{
}
public
PaymentPending
(
long
id
,
String
id_orders
,
String
transaction_time
,
String
transaction_status
,
String
payment_methode
,
String
id_nfc
,
double
gross_amount
)
{
this
.
id
=
id
;
this
.
id_orders
=
id_orders
;
this
.
transaction_time
=
transaction_time
;
this
.
transaction_status
=
transaction_status
;
this
.
payment_methode
=
payment_methode
;
this
.
id_nfc
=
id_nfc
;
this
.
gross_amount
=
gross_amount
;
}
protected
PaymentPending
(
Parcel
in
)
{
id
=
in
.
readLong
();
id_orders
=
in
.
readString
();
transaction_time
=
in
.
readString
();
transaction_status
=
in
.
readString
();
payment_methode
=
in
.
readString
();
id_nfc
=
in
.
readString
();
gross_amount
=
in
.
readInt
();
}
public
static
final
Creator
<
PaymentPending
>
CREATOR
=
new
Creator
<
PaymentPending
>()
{
@Override
public
PaymentPending
createFromParcel
(
Parcel
in
)
{
return
new
PaymentPending
(
in
);
}
@Override
public
PaymentPending
[]
newArray
(
int
size
)
{
return
new
PaymentPending
[
size
];
}
};
@Override
public
int
describeContents
()
{
return
0
;
}
@Override
public
void
writeToParcel
(
Parcel
parcel
,
int
i
)
{
parcel
.
writeLong
(
id
);
parcel
.
writeString
(
id_orders
);
parcel
.
writeString
(
transaction_time
);
parcel
.
writeString
(
transaction_status
);
parcel
.
writeString
(
payment_methode
);
parcel
.
writeString
(
id_nfc
);
parcel
.
writeDouble
(
gross_amount
);
}
public
long
getId
()
{
return
id
;
}
public
void
setId
(
long
id
)
{
this
.
id
=
id
;
}
public
String
getId_orders
()
{
return
id_orders
;
}
public
void
setId_orders
(
String
id_orders
)
{
this
.
id_orders
=
id_orders
;
}
public
String
getTransaction_time
()
{
return
transaction_time
;
}
public
void
setTransaction_time
(
String
transaction_time
)
{
this
.
transaction_time
=
transaction_time
;
}
public
String
getTransaction_status
()
{
return
transaction_status
;
}
public
void
setTransaction_status
(
String
transaction_status
)
{
this
.
transaction_status
=
transaction_status
;
}
public
String
getPayment_methode
()
{
return
payment_methode
;
}
public
void
setPayment_methode
(
String
payment_methode
)
{
this
.
payment_methode
=
payment_methode
;
}
public
String
getId_nfc
()
{
return
id_nfc
;
}
public
void
setId_nfc
(
String
id_nfc
)
{
this
.
id_nfc
=
id_nfc
;
}
public
double
getGross_amount
()
{
return
gross_amount
;
}
public
void
setGross_amount
(
double
gross_amount
)
{
this
.
gross_amount
=
gross_amount
;
}
}
app/src/main/java/com/yono/messeripos/repositories/PaymentPendingRepositories.java
0 → 100644
View file @
ab90d286
package
com
.
yono
.
messeripos
.
repositories
;
import
android.app.Application
;
import
androidx.lifecycle.LiveData
;
import
com.yono.messeripos.daos.PaymentPendingDaos
;
import
com.yono.messeripos.database.LocalDatabase
;
import
com.yono.messeripos.models.PaymentPending
;
import
com.yono.messeripos.models.ProductCartModels
;
import
java.util.List
;
public
class
PaymentPendingRepositories
{
private
PaymentPendingDaos
daos
;
private
LiveData
<
List
<
PaymentPending
>>
paymentPending
;
public
PaymentPendingRepositories
(
Application
application
)
{
LocalDatabase
db
=
LocalDatabase
.
geDatabase
(
application
);
daos
=
db
.
paymentPendingDaos
();
paymentPending
=
daos
.
getAll
();
}
public
void
insert
(
PaymentPending
paymentPending
){
LocalDatabase
.
databaseWriterExecutor
.
execute
(()
->
daos
.
insertPaymentPending
(
paymentPending
));
}
// public void delete(ProductCartModels productCartModels){
// LocalDatabase.databaseWriterExecutor.execute(() -> daos.del(productCartModels));
// }
public
void
updateIdNfc
(
String
idNfc
,
long
id
){
LocalDatabase
.
databaseWriterExecutor
.
execute
(()
->
daos
.
updateNfc
(
idNfc
,
id
));
}
public
LiveData
<
List
<
PaymentPending
>>
getPaymentByOrderId
(
String
idOrders
){
return
daos
.
getPaymentByIdOrder
(
idOrders
);
}
}
app/src/main/java/com/yono/messeripos/utils/Utils.java
View file @
ab90d286
...
@@ -26,6 +26,8 @@ import java.time.ZoneId;
...
@@ -26,6 +26,8 @@ import java.time.ZoneId;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.Locale
;
import
java.util.Locale
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
public
class
Utils
{
public
class
Utils
{
...
@@ -105,8 +107,8 @@ public class Utils {
...
@@ -105,8 +107,8 @@ public class Utils {
return
encodeImage
;
return
encodeImage
;
}
}
public
void
toastMessage
(
Context
context
,
String
message
){
public
Toast
toastMessage
(
Context
context
,
String
message
){
Toast
.
makeText
(
context
,
message
,
Toast
.
LENGTH_LONG
).
show
(
);
return
Toast
.
makeText
(
context
,
message
,
Toast
.
LENGTH_LONG
);
}
}
public
String
convertImageBase64Resource
(
Resources
resource
,
int
id
){
public
String
convertImageBase64Resource
(
Resources
resource
,
int
id
){
...
@@ -169,4 +171,18 @@ public class Utils {
...
@@ -169,4 +171,18 @@ public class Utils {
return
snackbar
;
return
snackbar
;
}
}
public
boolean
isValidEmail
(
String
email
)
{
String
regex
=
"^(.+)@(.+)$"
;
Pattern
pattern
=
Pattern
.
compile
(
regex
);
Matcher
matcher
=
pattern
.
matcher
(
email
);
return
matcher
.
matches
();
}
public
boolean
isValidPassword
(
String
pass
){
String
regex
=
"^(?=.*[A-Za-z-0-9])(?=.*\\d)[A-Za-z-0-9\\d]{8,}$"
;
Pattern
pattern
=
Pattern
.
compile
(
regex
);
Matcher
matcher
=
pattern
.
matcher
(
pass
);
return
matcher
.
matches
();
}
}
}
app/src/main/res/layout/activity_history.xml
View file @
ab90d286
...
@@ -6,9 +6,9 @@
...
@@ -6,9 +6,9 @@
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".HistoryActivity"
>
tools:context=
".HistoryActivity"
>
<include
<!-- <include-->
android:id=
"@+id/cAppBar"
<!-- android:id="@+id/cAppBar"-->
layout=
"@layout/app_bar"
/
>
<!-- layout="@layout/app_bar" />--
>
<ProgressBar
<ProgressBar
android:id=
"@+id/loading"
android:id=
"@+id/loading"
...
@@ -19,9 +19,8 @@
...
@@ -19,9 +19,8 @@
<ScrollView
<ScrollView
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"match_parent"
android:layout_alignParentBottom=
"true"
android:layout_alignParentBottom=
"true"
>
android:layout_below=
"@+id/cAppBar"
>
<androidx.recyclerview.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rvHistory"
android:id=
"@+id/rvHistory"
...
...
app/src/main/res/layout/activity_list_transaction.xml
View file @
ab90d286
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
app:tabGravity=
"fill"
app:tabGravity=
"fill"
app:tabIndicatorColor=
"@color/colorGreen"
app:tabIndicatorColor=
"@color/colorGreen"
app:tabIndicatorHeight=
"4dp"
app:tabIndicatorHeight=
"4dp"
app:tabTextColor=
"@color/colorWhite"
app:tabBackground=
"@drawable/gradient"
app:tabBackground=
"@drawable/gradient"
app:layout_constraintTop_toBottomOf=
"@id/toolbar"
app:layout_constraintTop_toBottomOf=
"@id/toolbar"
app:tabMode=
"fixed"
/>
app:tabMode=
"fixed"
/>
...
...
app/src/main/res/layout/item_history.xml
View file @
ab90d286
...
@@ -15,12 +15,19 @@
...
@@ -15,12 +15,19 @@
<variable
<variable
name=
"transactionStatus"
name=
"transactionStatus"
type=
"String"
/>
type=
"String"
/>
<variable
name=
"grossAmount"
type=
"String"
/>
</data>
</data>
<com.google.android.material.card.MaterialCardView
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvHistory"
android:id=
"@+id/cvHistory"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
app:cardCornerRadius=
"10dp"
android:layout_margin=
"10dp"
app:cardElevation=
"2dp"
tools:ignore=
"MissingConstraints"
>
tools:ignore=
"MissingConstraints"
>
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout
...
@@ -59,7 +66,7 @@
...
@@ -59,7 +66,7 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:fontFamily=
"@font/roboto"
android:fontFamily=
"@font/roboto"
android:textSize=
"16sp"
android:textSize=
"16sp"
android:text=
"@{transaction.
orderId
}"
android:text=
"@{transaction.
nomorPembayaranGet
}"
tools:text=
"#6821739123"
tools:text=
"#6821739123"
app:layout_constraintStart_toStartOf=
"@id/tvDate"
app:layout_constraintStart_toStartOf=
"@id/tvDate"
app:layout_constraintTop_toBottomOf=
"@+id/tvDate"
/>
app:layout_constraintTop_toBottomOf=
"@+id/tvDate"
/>
...
@@ -79,7 +86,7 @@
...
@@ -79,7 +86,7 @@
android:id=
"@+id/tvVA"
android:id=
"@+id/tvVA"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@{
transaction.nomorPembayaranGe
t}"
android:text=
"@{
grossAmoun
t}"
android:textAllCaps=
"true"
android:textAllCaps=
"true"
android:textColor=
"#000"
android:textColor=
"#000"
android:textStyle=
"bold"
android:textStyle=
"bold"
...
...
app/src/main/res/layout/item_pending.xml
0 → 100644
View file @
ab90d286
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<variable
name=
"transaction"
type=
"com.yono.messeripos.models.PaymentsModels"
/>
<variable
name=
"date"
type=
"String"
/>
<variable
name=
"transactionStatus"
type=
"String"
/>
<variable
name=
"grossAmount"
type=
"String"
/>
</data>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvHistory"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:cardCornerRadius=
"10dp"
android:layout_margin=
"10dp"
app:cardElevation=
"2dp"
tools:ignore=
"MissingConstraints"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin=
"12dp"
>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/tvPay"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:fontFamily=
"@font/roboto"
android:textSize=
"24sp"
app:layout_constraintStart_toStartOf=
"parent"
android:textColor=
"@android:color/black"
android:textStyle=
"bold"
android:textAllCaps=
"true"
tools:text=
"@string/hint_pay"
android:text=
"@{transaction.paymentType}"
app:layout_constraintTop_toTopOf=
"parent"
/>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/tvDate"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:fontFamily=
"@font/roboto"
android:textSize=
"16sp"
tools:text=
"@tools:sample/date/ddmmyy"
android:text=
"@{date}"
app:layout_constraintStart_toStartOf=
"@id/tvPay"
app:layout_constraintTop_toBottomOf=
"@+id/tvPay"
/>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/tvOrder"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:fontFamily=
"@font/roboto"
android:textSize=
"16sp"
android:text=
"@{transaction.nomorPembayaranGet}"
tools:text=
"#6821739123"
app:layout_constraintStart_toStartOf=
"@id/tvDate"
app:layout_constraintTop_toBottomOf=
"@+id/tvDate"
/>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/tvVA"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@{grossAmount}"
android:textAllCaps=
"true"
android:textColor=
"#000"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
tools:text=
"@tools:sample/first_names"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment