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
471fa5d8
Commit
471fa5d8
authored
Aug 27, 2020
by
Muhammad Suryono
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update main activity
parent
e3c02909
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
246 additions
and
47 deletions
+246
-47
MainActivity.java
app/src/main/java/com/yono/messeripos/MainActivity.java
+64
-28
ProductAdapter.java
...main/java/com/yono/messeripos/adapter/ProductAdapter.java
+40
-19
TransactionAdapter.java
.../java/com/yono/messeripos/adapter/TransactionAdapter.java
+48
-0
TransactionService.java
...a/com/yono/messeripos/api/service/TransactionService.java
+16
-0
MainViewModels.java
.../main/java/com/yono/messeripos/models/MainViewModels.java
+38
-0
PaymentsModels.java
.../main/java/com/yono/messeripos/models/PaymentsModels.java
+33
-0
activity_main.xml
app/src/main/res/layout/activity_main.xml
+1
-0
home.xml
app/src/main/res/menu/home.xml
+6
-0
No files found.
app/src/main/java/com/yono/messeripos/MainActivity.java
View file @
471fa5d8
...
...
@@ -7,12 +7,15 @@ import android.content.Intent;
import
android.content.SharedPreferences
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.TextWatcher
;
import
android.util.Log
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.View
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
android.widget.EditText
;
import
android.widget.TextView
;
import
android.widget.Toast
;
...
...
@@ -36,6 +39,7 @@ import com.yono.messeripos.databinding.ActivityMainBinding;
import
com.yono.messeripos.models.CategoryModels
;
import
com.yono.messeripos.models.MainViewModels
;
import
com.yono.messeripos.models.MainViewModelsCart
;
import
com.yono.messeripos.models.PaymentsModels
;
import
com.yono.messeripos.models.ProductCartModels
;
import
com.yono.messeripos.models.ProductModels
;
import
com.yono.messeripos.response.DataResponse
;
...
...
@@ -52,6 +56,7 @@ public class MainActivity extends AppCompatActivity {
ProductAdapter
productAdapter
;
CartAdapter
cartAdapter
;
TextView
txtBadge
;
EditText
etSearch
;
Utils
utils
=
new
Utils
();
public
static
Boolean
status_update
=
false
;
MainViewModelsCart
mainViewModelsCart
;
...
...
@@ -87,6 +92,23 @@ public class MainActivity extends AppCompatActivity {
w
.
setFlags
(
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
,
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
);
}
binding
.
etSearchProduct
.
addTextChangedListener
(
new
TextWatcher
()
{
@Override
public
void
beforeTextChanged
(
CharSequence
charSequence
,
int
i
,
int
i1
,
int
i2
)
{
}
@Override
public
void
onTextChanged
(
CharSequence
charSequence
,
int
i
,
int
i1
,
int
i2
)
{
productAdapter
.
getFilter
().
filter
(
charSequence
);
}
@Override
public
void
afterTextChanged
(
Editable
editable
)
{
}
});
toolbar
.
setOnMenuItemClickListener
(
new
Toolbar
.
OnMenuItemClickListener
()
{
@Override
public
boolean
onMenuItemClick
(
MenuItem
item
)
{
...
...
@@ -112,6 +134,11 @@ public class MainActivity extends AppCompatActivity {
productAdapter
.
notifyDataSetChanged
();
}
else
if
(
id
==
R
.
id
.
create
)
{
startActivity
(
new
Intent
(
getApplicationContext
(),
FormProductActivity
.
class
));
}
else
if
(
id
==
R
.
id
.
allTransaction
){
Log
.
i
(
"get transaction main"
,
"onMenuItemClick: "
+
utils
.
convertGson
(
mainViewModels
.
getAllTransactions
().
getValue
().
getData
()));
List
<
PaymentsModels
>
data
=
mainViewModels
.
getAllTransactions
().
getValue
().
getData
();
ArrayList
<
PaymentsModels
>
newData
=
new
ArrayList
<>();
newData
.
addAll
(
data
);
}
return
true
;
}
...
...
@@ -259,34 +286,43 @@ public class MainActivity extends AppCompatActivity {
binding
.
rvProduct
.
setVisibility
(
View
.
GONE
);
if
(
categoryModels
.
getIdCategory
()
==
0
){
mainViewModels
.
getProduct
().
observe
(
MainActivity
.
this
,
new
Observer
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>()
{
@Override
public
void
onChanged
(
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>
listDataResponse
)
{
if
(
listDataResponse
!=
null
)
{
ArrayList
<
ProductModels
>
productModelsArrayList
=
new
ArrayList
<>();
productModelsArrayList
.
addAll
(
listDataResponse
.
getData
());
progressDialog
.
dismiss
();
showLoading
(
false
);
if
(
productModelsArrayList
.
isEmpty
())
{
binding
.
rvProduct
.
setVisibility
(
View
.
GONE
);
binding
.
imgEmpty
.
setVisibility
(
View
.
VISIBLE
);
binding
.
imgEmpty
.
bringToFront
();
selectCategory
=
false
;
Log
.
i
(
"daidalam get if"
,
"onGetProduct: "
+
selectCategory
);
}
else
{
binding
.
rvProduct
.
setVisibility
(
View
.
VISIBLE
);
binding
.
imgEmpty
.
setVisibility
(
View
.
GONE
);
productAdapter
.
setProduct
(
MainActivity
.
this
,
productModelsArrayList
);
binding
.
rvProduct
.
setLayoutManager
(
new
GridLayoutManager
(
MainActivity
.
this
,
2
));
binding
.
rvProduct
.
setAdapter
(
productAdapter
);
selectCategory
=
false
;
Log
.
i
(
"daidalam get else"
,
"onGetProduct: "
+
selectCategory
);
// productAdapter.notifyDataSetChanged();
}
}
}
});
if
(
mainViewModels
.
getProduct
().
getValue
().
getData
().
size
()
!=
0
){
progressDialog
.
dismiss
();
selectCategory
=
false
;
}
else
{
binding
.
rvProduct
.
setVisibility
(
View
.
GONE
);
binding
.
imgEmpty
.
setVisibility
(
View
.
VISIBLE
);
binding
.
imgEmpty
.
bringToFront
();
selectCategory
=
false
;
}
// mainViewModels.getProduct().observe(MainActivity.this, new Observer<DataResponse<List<ProductModels<CategoryModels>>>>() {
// @Override
// public void onChanged(DataResponse<List<ProductModels<CategoryModels>>> listDataResponse) {
// if (listDataResponse != null) {
// ArrayList<ProductModels> productModelsArrayList = new ArrayList<>();
//
// productModelsArrayList.addAll(listDataResponse.getData());
// progressDialog.dismiss();
// showLoading(false);
// if (productModelsArrayList.isEmpty()) {
// binding.rvProduct.setVisibility(View.GONE);
// binding.imgEmpty.setVisibility(View.VISIBLE);
// binding.imgEmpty.bringToFront();
// selectCategory = false;
// Log.i("daidalam get if", "onGetProduct: "+selectCategory);
// } else {
// binding.rvProduct.setVisibility(View.VISIBLE);
// binding.imgEmpty.setVisibility(View.GONE);
// productAdapter.setProduct(MainActivity.this, productModelsArrayList);
// binding.rvProduct.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
// binding.rvProduct.setAdapter(productAdapter);
// selectCategory = false;
// Log.i("daidalam get else", "onGetProduct: "+selectCategory);
//// productAdapter.notifyDataSetChanged();
// }
// }
// }
// });
selectCategory
=
false
;
}
else
{
mainViewModels
.
getProductByCategory
(
categoryModels
.
getIdCategory
()).
observe
(
MainActivity
.
this
,
new
Observer
<
DataResponse
<
List
<
ProductModels
>>>()
{
...
...
app/src/main/java/com/yono/messeripos/adapter/ProductAdapter.java
View file @
471fa5d8
...
...
@@ -2,42 +2,31 @@ package com.yono.messeripos.adapter;
import
android.annotation.SuppressLint
;
import
android.content.Context
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.Toast
;
import
android.widget.Filter
;
import
android.widget.Filterable
;
import
androidx.annotation.NonNull
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.ViewModelProvider
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.yono.messeripos.MainActivity
;
import
com.yono.messeripos.R
;
import
com.yono.messeripos.databinding.ItemListBinding
;
import
androidx.fragment.app.FragmentActivity
;
import
androidx.lifecycle.ViewModelProvider
;
import
androidx.lifecycle.ViewModelProviders
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.
google.gson.Gson
;
import
com.
yono.messeripos.MainActivity
;
import
com.yono.messeripos.R
;
import
com.yono.messeripos.databinding.ItemListBinding
;
import
com.yono.messeripos.models.CartModels
;
import
com.yono.messeripos.models.MainViewModelsCart
;
import
com.yono.messeripos.models.ProductCartModels
;
import
com.yono.messeripos.models.ProductModels
;
import
com.yono.messeripos.utils.Utils
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormatSymbols
;
import
java.util.ArrayList
;
public
class
ProductAdapter
extends
RecyclerView
.
Adapter
<
ProductAdapter
.
MyViewHolder
>
{
public
class
ProductAdapter
extends
RecyclerView
.
Adapter
<
ProductAdapter
.
MyViewHolder
>
implements
Filterable
{
private
ArrayList
<
ProductModels
>
productModels
=
new
ArrayList
<>();
private
ArrayList
<
ProductModels
>
productModelsFiltered
=
new
ArrayList
<>();
Context
context
;
MainViewModelsCart
mainViewModelsCart
;
Utils
utils
=
new
Utils
();
public
interface
ProductListener
{
...
...
@@ -58,10 +47,42 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
public
void
setProduct
(
Context
context
,
ArrayList
<
ProductModels
>
productModels
)
{
this
.
productModels
=
productModels
;
this
.
context
=
context
;
mainViewModelsCart
=
ViewModelProviders
.
of
((
FragmentActivity
)
context
).
get
(
MainViewModelsCart
.
class
)
;
this
.
productModelsFiltered
=
productModels
;
notifyDataSetChanged
();
}
@Override
public
Filter
getFilter
()
{
return
new
Filter
()
{
@Override
protected
FilterResults
performFiltering
(
CharSequence
charSequence
)
{
String
charString
=
charSequence
.
toString
();
if
(
charString
.
isEmpty
())
{
productModelsFiltered
=
productModels
;
}
else
{
ArrayList
<
ProductModels
>
filteredList
=
new
ArrayList
<>();
for
(
ProductModels
prdk
:
productModels
)
{
if
(
prdk
.
getProductName
().
toLowerCase
().
contains
(
charString
.
toLowerCase
()))
{
filteredList
.
add
(
prdk
);
}
}
productModelsFiltered
=
filteredList
;
}
FilterResults
filterResults
=
new
FilterResults
();
filterResults
.
values
=
productModelsFiltered
;
return
filterResults
;
}
@Override
protected
void
publishResults
(
CharSequence
charSequence
,
FilterResults
filterResults
)
{
productModelsFiltered
=
(
ArrayList
<
ProductModels
>)
filterResults
.
values
;
notifyDataSetChanged
();
}
};
}
@NonNull
@Override
public
ProductAdapter
.
MyViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
...
...
@@ -77,12 +98,12 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
@Override
public
void
onBindViewHolder
(
@NonNull
ProductAdapter
.
MyViewHolder
holder
,
int
position
)
{
holder
.
bindData
(
productModels
.
get
(
position
));
holder
.
bindData
(
productModels
Filtered
.
get
(
position
));
}
@Override
public
int
getItemCount
()
{
return
productModels
.
size
();
return
productModels
Filtered
.
size
();
}
public
class
MyViewHolder
extends
RecyclerView
.
ViewHolder
{
...
...
app/src/main/java/com/yono/messeripos/adapter/TransactionAdapter.java
0 → 100644
View file @
471fa5d8
package
com
.
yono
.
messeripos
.
adapter
;
import
android.content.Context
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.yono.messeripos.models.PaymentsModels
;
import
com.yono.messeripos.utils.Utils
;
import
java.util.ArrayList
;
public
class
TransactionAdapter
extends
RecyclerView
.
Adapter
<
TransactionAdapter
.
MyViewHolder
>
{
private
ArrayList
<
PaymentsModels
>
paymentsModels
=
new
ArrayList
<>();
Context
context
;
Utils
utils
=
new
Utils
();
public
void
setTransactionAdapter
(
Context
context
,
ArrayList
<
PaymentsModels
>
paymentsModels
){
this
.
paymentsModels
=
paymentsModels
;
this
.
context
=
context
;
notifyDataSetChanged
();
}
@NonNull
@Override
public
TransactionAdapter
.
MyViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
return
null
;
}
@Override
public
void
onBindViewHolder
(
@NonNull
TransactionAdapter
.
MyViewHolder
holder
,
int
position
)
{
}
@Override
public
int
getItemCount
()
{
return
0
;
}
public
class
MyViewHolder
extends
RecyclerView
.
ViewHolder
{
public
MyViewHolder
(
@NonNull
View
itemView
)
{
super
(
itemView
);
}
}
}
app/src/main/java/com/yono/messeripos/api/service/TransactionService.java
0 → 100644
View file @
471fa5d8
package
com
.
yono
.
messeripos
.
api
.
service
;
import
com.yono.messeripos.api.ApiHelper
;
import
com.yono.messeripos.models.PaymentsModels
;
import
com.yono.messeripos.response.DataResponse
;
import
java.util.List
;
import
retrofit2.Call
;
import
retrofit2.http.GET
;
public
interface
TransactionService
{
@GET
(
ApiHelper
.
VERSI_API_1
+
"payments"
)
Call
<
DataResponse
<
List
<
PaymentsModels
>>>
getAllTransaction
();
}
app/src/main/java/com/yono/messeripos/models/MainViewModels.java
View file @
471fa5d8
...
...
@@ -4,14 +4,18 @@ import android.util.Log;
import
androidx.lifecycle.LiveData
;
import
androidx.lifecycle.MutableLiveData
;
import
androidx.lifecycle.Transformations
;
import
androidx.lifecycle.ViewModel
;
import
androidx.lifecycle.ViewModelProvider
;
import
com.google.gson.Gson
;
import
com.yono.messeripos.api.client.Client
;
import
com.yono.messeripos.api.service.CategoryServise
;
import
com.yono.messeripos.api.service.ProductService
;
import
com.yono.messeripos.api.service.TransactionService
;
import
com.yono.messeripos.api.service.UsersService
;
import
com.yono.messeripos.response.DataResponse
;
import
com.yono.messeripos.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -25,13 +29,19 @@ public class MainViewModels extends ViewModel {
MutableLiveData
<
DataResponse
<
List
<
ProductModels
>>>
productByCategory
;
MutableLiveData
<
DataResponse
<
List
<
CategoryModels
>>>
categoryList
;
MutableLiveData
<
DataResponse
<
UsersModels
>>
usersLogin
;
MutableLiveData
<
DataResponse
<
List
<
PaymentsModels
>>>
transactions
;
private
MainViewModels
mainViewModels
;
Client
client
=
new
Client
();
Utils
utils
=
new
Utils
();
public
MainViewModels
(){
productList
=
new
MutableLiveData
<>();
categoryList
=
new
MutableLiveData
<>();
productByCategory
=
new
MutableLiveData
<>();
transactions
=
new
MutableLiveData
<>();
}
public
LiveData
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>
getProduct
(){
...
...
@@ -49,6 +59,34 @@ public class MainViewModels extends ViewModel {
return
productByCategory
;
}
public
LiveData
<
DataResponse
<
List
<
PaymentsModels
>>>
getAllTransactions
(){
getDataTransaction
();
return
transactions
;
}
private
void
getDataTransaction
()
{
TransactionService
transactionService
=
client
.
Client
(
TransactionService
.
class
);
transactionService
.
getAllTransaction
().
enqueue
(
new
Callback
<
DataResponse
<
List
<
PaymentsModels
>>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
List
<
PaymentsModels
>>>
call
,
Response
<
DataResponse
<
List
<
PaymentsModels
>>>
response
)
{
Log
.
i
(
"Get all transaction"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
if
(
response
.
body
()
!=
null
){
transactions
.
setValue
(
response
.
body
());
}
else
{
transactions
=
null
;
}
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
List
<
PaymentsModels
>>>
call
,
Throwable
t
)
{
Log
.
e
(
"Error get transaction"
,
"onFailure: "
,
t
);
transactions
=
null
;
}
});
}
private
void
getDataProductByCategory
(
int
id
)
{
CategoryServise
categoryServise
=
client
.
Client
(
CategoryServise
.
class
);
...
...
app/src/main/java/com/yono/messeripos/models/PaymentsModels.java
View file @
471fa5d8
...
...
@@ -15,6 +15,15 @@ public class PaymentsModels {
@SerializedName
(
"gross_amount"
)
private
long
grossAmount
;
@SerializedName
(
"transaction_status"
)
private
String
transactionStatus
;
@SerializedName
(
"created_at"
)
private
String
createdAt
;
@SerializedName
(
"updated_at"
)
private
String
updatedAt
;
public
PaymentsModels
()
{
}
...
...
@@ -56,4 +65,28 @@ public class PaymentsModels {
public
void
setGrossAmount
(
long
grossAmount
)
{
this
.
grossAmount
=
grossAmount
;
}
public
String
getTransactionStatus
()
{
return
transactionStatus
;
}
public
void
setTransactionStatus
(
String
transactionStatus
)
{
this
.
transactionStatus
=
transactionStatus
;
}
public
String
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
String
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
public
String
getUpdatedAt
()
{
return
updatedAt
;
}
public
void
setUpdatedAt
(
String
updatedAt
)
{
this
.
updatedAt
=
updatedAt
;
}
}
app/src/main/res/layout/activity_main.xml
View file @
471fa5d8
...
...
@@ -49,6 +49,7 @@
>
<EditText
android:id=
"@+id/etSearchProduct"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"#fff"
...
...
app/src/main/res/menu/home.xml
View file @
471fa5d8
...
...
@@ -20,4 +20,10 @@
android:title=
"Create Product"
app:showAsAction=
"never"
/>
<item
android:id=
"@+id/allTransaction"
android:orderInCategory=
"100"
android:title=
"All Transaction"
app:showAsAction=
"never"
/>
</menu>
\ 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