Commit aad7db01 authored by Wahyu Wibowo's avatar Wahyu Wibowo

edit visibility

parent 953044a3
package com.example.yourcashiertest.activities; package com.example.yourcashiertest.activities;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.yourcashiertest.R; import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.CartAdapter;
import com.example.yourcashiertest.databinding.ActivityCartBinding; import com.example.yourcashiertest.databinding.ActivityCartBinding;
import com.example.yourcashiertest.databinding.ItemListBinding;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
public class CartActivity extends AppCompatActivity { public class CartActivity extends AppCompatActivity {
ImageView btnBack;
ActivityCartBinding binding; ActivityCartBinding binding;
CartAdapter adapter;
TextView tvName, tvTotalPrice, tvQty, tvPrice, tvItems;
Button btnAdd, btnMin, btnCheckout;
int count = 1;
int pricePerQty;
int totalPrice;
int totalItems;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart); binding = DataBindingUtil.setContentView(this, R.layout.activity_cart);
btnCheckout = findViewById(R.id.btnCheckout);
btnBack = findViewById(R.id.ivBtnBack);
tvName = findViewById(R.id.burger_medi);
tvQty = findViewById(R.id.tv_qty);
btnAdd = findViewById(R.id.btn_add);
btnMin = findViewById(R.id.btn_min);
tvPrice = findViewById(R.id.some_id);
tvTotalPrice = findViewById(R.id.tvTotalPrice);
tvItems = findViewById(R.id.items);
// adapter = new CartAdapter();
// binding.rvCartList.setLayoutManager(new LinearLayoutManager(this));
// binding.rvCartList.setAdapter(adapter);
int price = 10000; // CartViewModel cartViewModel = new ViewModelProvider(this).get(CartViewModel.class);
// cartViewModel.getCarts().observe(this, carts -> adapter.setCartList(carts));
tvName.setText("Burger KING"); //
btnAdd.setOnClickListener(new View.OnClickListener() { // binding.setViewModelCart(cartViewModel);
@Override
public void onClick(View view) {
count++;
pricePerQty = price * count;
changeOnClick(count, pricePerQty, totalPrice);
}
});
binding.ivBtnBack.setOnClickListener(view -> startActivity(new Intent(CartActivity.this, MainActivity.class)));
btnMin.setOnClickListener(view -> { binding.btnCheckout.setOnClickListener(view -> {
count--;
if (count == 0){
}
pricePerQty = price * count;
changeOnClick(count, pricePerQty, totalPrice);
});
btnBack.setOnClickListener(view -> startActivity(new Intent(CartActivity.this, MainActivity.class)));
btnCheckout.setOnClickListener(view -> {
startActivity(new Intent(CartActivity.this, PaymentActivity.class)); startActivity(new Intent(CartActivity.this, PaymentActivity.class));
finish(); finish();
}); });
...@@ -93,10 +51,4 @@ public class CartActivity extends AppCompatActivity { ...@@ -93,10 +51,4 @@ public class CartActivity extends AppCompatActivity {
return priceRupiah; return priceRupiah;
} }
private void changeOnClick(int count, int pricePerQty, int totalPrice){
tvQty.setText(String.valueOf(count));
tvPrice.setText(changeToCurrency(pricePerQty));
tvTotalPrice.setText(changeToCurrency(totalPrice));
}
} }
\ No newline at end of file
...@@ -25,9 +25,7 @@ public class LoginActivity extends AppCompatActivity { ...@@ -25,9 +25,7 @@ public class LoginActivity extends AppCompatActivity {
etUsername = findViewById(R.id.etUsername); etUsername = findViewById(R.id.etUsername);
btnLogin = findViewById(R.id.btnLogin); btnLogin = findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new View.OnClickListener() { btnLogin.setOnClickListener(view -> {
@Override
public void onClick(View view) {
if(etUsername.getText().toString().length() == 0 || etPassword.getText().toString().length() == 0){ if(etUsername.getText().toString().length() == 0 || etPassword.getText().toString().length() == 0){
Toast.makeText(getApplicationContext(), "Please input Username and Password", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "Please input Username and Password", Toast.LENGTH_SHORT).show();
...@@ -38,7 +36,7 @@ public class LoginActivity extends AppCompatActivity { ...@@ -38,7 +36,7 @@ public class LoginActivity extends AppCompatActivity {
}else{ }else{
startActivity(new Intent(LoginActivity.this, MainActivity.class) startActivity(new Intent(LoginActivity.this, MainActivity.class)
.putExtra(DATA_LOGIN, etUsername.getText().toString())); .putExtra(DATA_LOGIN, etUsername.getText().toString()));
} finish();
} }
}); });
......
...@@ -3,6 +3,7 @@ package com.example.yourcashiertest.activities; ...@@ -3,6 +3,7 @@ package com.example.yourcashiertest.activities;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import android.Manifest; import android.Manifest;
...@@ -11,19 +12,23 @@ import android.content.Intent; ...@@ -11,19 +12,23 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.Menu;
import android.widget.PopupMenu; import android.widget.PopupMenu;
import com.example.yourcashiertest.R; import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.ProductAdapter; import com.example.yourcashiertest.adapters.ProductAdapter;
import com.example.yourcashiertest.databinding.ActivityMainBinding; import com.example.yourcashiertest.databinding.ActivityMainBinding;
import com.example.yourcashiertest.databinding.ItemListBinding;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.models.CartModel;
import com.example.yourcashiertest.viewmodels.CartViewModel;
import com.example.yourcashiertest.viewmodels.ProductViewModel; import com.example.yourcashiertest.viewmodels.ProductViewModel;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding; ActivityMainBinding binding;
ItemListBinding bindingItem;
public static final String DATA_PRODUCT = "DATA_PRODUCT"; public static final String DATA_PRODUCT = "DATA_PRODUCT";
...@@ -32,6 +37,9 @@ public class MainActivity extends AppCompatActivity { ...@@ -32,6 +37,9 @@ public class MainActivity extends AppCompatActivity {
private String[] permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, private String[] permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}; Manifest.permission.WRITE_EXTERNAL_STORAGE};
public static boolean visibility = false;
CartViewModel cartViewModel;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -40,6 +48,8 @@ public class MainActivity extends AppCompatActivity { ...@@ -40,6 +48,8 @@ public class MainActivity extends AppCompatActivity {
ProductAdapter adapter = new ProductAdapter(); ProductAdapter adapter = new ProductAdapter();
binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
// cartViewModel = new ViewModelProvider(this).get(CartViewModel.class);
String name = getIntent().getStringExtra(LoginActivity.DATA_LOGIN); String name = getIntent().getStringExtra(LoginActivity.DATA_LOGIN);
binding.tvUser.setText(name); binding.tvUser.setText(name);
// settings menu // settings menu
...@@ -53,12 +63,25 @@ public class MainActivity extends AppCompatActivity { ...@@ -53,12 +63,25 @@ public class MainActivity extends AppCompatActivity {
startActivity(new Intent(MainActivity.this, ProductActivity.class)); startActivity(new Intent(MainActivity.this, ProductActivity.class));
break; break;
case R.id.item_two: case R.id.item_two:
adapter.setVisibility(true); if (visibility){
visibility = false;
}else {
visibility = true;
}
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);
return true; return true;
} }
return false; return false;
}); });
popupMenu.inflate(R.menu.settings_menu); popupMenu.inflate(R.menu.settings_menu);
if (visibility){
popupMenu.getMenu().findItem(R.id.item_two).setTitle("Gone");
}else {
popupMenu.getMenu().findItem(R.id.item_two).setTitle("Update or delete");
}
popupMenu.show(); popupMenu.show();
}); });
...@@ -77,6 +100,11 @@ public class MainActivity extends AppCompatActivity { ...@@ -77,6 +100,11 @@ public class MainActivity extends AppCompatActivity {
public void onDelete(Product product) { public void onDelete(Product product) {
viewModel.deleteProduct(product); viewModel.deleteProduct(product);
} }
@Override
public void onAddToCart(Product product) {
addToCart(product);
}
}); });
binding.etSearch.addTextChangedListener(new TextWatcher() { binding.etSearch.addTextChangedListener(new TextWatcher() {
...@@ -98,6 +126,31 @@ public class MainActivity extends AppCompatActivity { ...@@ -98,6 +126,31 @@ public class MainActivity extends AppCompatActivity {
binding.setViewModel(viewModel); binding.setViewModel(viewModel);
} }
public void addToCart(Product product){
// Cart cart = new Cart(0,"", "", 0, 0);
// cart.setIdProduct(product.getId());
// cart.setImage(product.getPhoto());
// cart.setNameProduct(product.getName());
// cart.setPrice(product.getPrice());
// cart.setQty(1);
// cartViewModel.insertCart(cart);
List<CartModel> list = new ArrayList<>();
CartModel cart = new CartModel();
cart.setIdProduct(product.getId());
cart.setNameProduct(product.getName());
cart.setImage(product.getPhoto());
cart.setPrice(product.getPrice());
cart.setQty(product.getQuantity());
}
@Override
public void onBackPressed() {
super.onBackPressed();
visibility = false;
}
@Override @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
......
...@@ -10,26 +10,29 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -10,26 +10,29 @@ import androidx.recyclerview.widget.RecyclerView;
import com.example.yourcashiertest.R; import com.example.yourcashiertest.R;
import com.example.yourcashiertest.databinding.CartItemBinding; import com.example.yourcashiertest.databinding.CartItemBinding;
import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.models.CartModel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> { public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
private List<Product> productList = new ArrayList<>(); private List<Cart> carts = new ArrayList<>();
public interface Listener{ public interface CartListener{
void onIncrease(); void onIncrease();
void onDecrease(); void onDecrease();
} }
private CartListener listener;
public void setCartListener(CartListener listener){
this.listener = listener;
}
public Listener listener; public void setCartList(List<Cart> carts){
this.carts = carts;
public CartAdapter(List<Product> productList) {
this.productList = productList;
notifyDataSetChanged(); notifyDataSetChanged();
} }
...@@ -48,12 +51,12 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> { ...@@ -48,12 +51,12 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
@Override @Override
public void onBindViewHolder(@NonNull CartAdapter.ViewHolder holder, int position) { public void onBindViewHolder(@NonNull CartAdapter.ViewHolder holder, int position) {
holder.bindData(productList.get(position)); holder.bindData(carts.get(position), listener);
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return productList.size(); return carts.size();
} }
public class ViewHolder extends RecyclerView.ViewHolder { public class ViewHolder extends RecyclerView.ViewHolder {
...@@ -66,13 +69,8 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> { ...@@ -66,13 +69,8 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
this.cartItemBinding = cartItemBinding; this.cartItemBinding = cartItemBinding;
} }
public void bindData(Product product) { public void bindData(Cart cart, CartListener listener) {
cartItemBinding.setCartProduct(cart);
cartItemBinding.setCartProduct(product);
cartItemBinding.btnAdd.setOnClickListener(view -> listener.onIncrease());
cartItemBinding.btnMin.setOnClickListener(view -> listener.onDecrease());
} }
} }
......
...@@ -8,6 +8,7 @@ import androidx.databinding.DataBindingUtil; ...@@ -8,6 +8,7 @@ import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.example.yourcashiertest.R; import com.example.yourcashiertest.R;
import com.example.yourcashiertest.activities.MainActivity;
import com.example.yourcashiertest.databinding.ItemListBinding; import com.example.yourcashiertest.databinding.ItemListBinding;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
...@@ -19,12 +20,13 @@ import java.util.List; ...@@ -19,12 +20,13 @@ import java.util.List;
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHolder> { public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHolder> {
private List<Product> products = new ArrayList<>(); private List<Product> products = new ArrayList<>();
private Boolean visibility;
public interface ProductListener { public interface ProductListener {
void onUpdate(Product product); void onUpdate(Product product);
void onDelete(Product product); void onDelete(Product product);
void onAddToCart(Product product);
} }
private ProductListener listener; private ProductListener listener;
...@@ -55,7 +57,6 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold ...@@ -55,7 +57,6 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold
@Override @Override
public void onBindViewHolder(@NonNull ProductAdapter.ViewHolder holder, int position) { public void onBindViewHolder(@NonNull ProductAdapter.ViewHolder holder, int position) {
holder.bindData(products.get(position), listener); holder.bindData(products.get(position), listener);
holder.binding.setVisibility(visibility);
} }
@Override @Override
...@@ -65,7 +66,6 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold ...@@ -65,7 +66,6 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold
public static class ViewHolder extends RecyclerView.ViewHolder { public static class ViewHolder extends RecyclerView.ViewHolder {
private ItemListBinding binding; private ItemListBinding binding;
private Boolean visibility;
public ViewHolder(@NonNull ItemListBinding binding) { public ViewHolder(@NonNull ItemListBinding binding) {
super(binding.getRoot()); super(binding.getRoot());
...@@ -75,6 +75,8 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold ...@@ -75,6 +75,8 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold
public void bindData(Product product, ProductListener listener) { public void bindData(Product product, ProductListener listener) {
binding.setProduct(product); binding.setProduct(product);
binding.setVisibility(MainActivity.visibility);
DecimalFormat rupiah = (DecimalFormat) DecimalFormat.getCurrencyInstance(); DecimalFormat rupiah = (DecimalFormat) DecimalFormat.getCurrencyInstance();
DecimalFormatSymbols format = new DecimalFormatSymbols(); DecimalFormatSymbols format = new DecimalFormatSymbols();
...@@ -88,10 +90,7 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold ...@@ -88,10 +90,7 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHold
binding.ivUpdate.setOnClickListener(view -> listener.onUpdate(product)); binding.ivUpdate.setOnClickListener(view -> listener.onUpdate(product));
binding.ivDelete.setOnClickListener(view -> listener.onDelete(product)); binding.ivDelete.setOnClickListener(view -> listener.onDelete(product));
binding.vAdd.setOnClickListener(view -> listener.onAddToCart(product));
} }
} }
public void setVisibility(Boolean visibility){
this.visibility = visibility;
}
} }
\ No newline at end of file
package com.example.yourcashiertest.daos; package com.example.yourcashiertest.daos;
import androidx.lifecycle.LiveData;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;
import com.example.yourcashiertest.entities.Cart;
import java.util.List;
@Dao @Dao
public interface CartDao { public interface CartDao {
@Query("SELECT * FROM Cart ORDER BY id DESC")
public LiveData<List<Cart>> getCarts();
@Insert(onConflict = OnConflictStrategy.IGNORE)
public void insertCart(Cart cart);
@Update
public void updateCart(Cart cart);
@Delete
public void deleteCart(Cart cart);
} }
...@@ -8,10 +8,13 @@ import androidx.room.DatabaseConfiguration; ...@@ -8,10 +8,13 @@ import androidx.room.DatabaseConfiguration;
import androidx.room.InvalidationTracker; import androidx.room.InvalidationTracker;
import androidx.room.Room; import androidx.room.Room;
import androidx.room.RoomDatabase; import androidx.room.RoomDatabase;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
import androidx.sqlite.db.SupportSQLiteOpenHelper; import androidx.sqlite.db.SupportSQLiteOpenHelper;
import com.example.yourcashiertest.daos.CartDao; import com.example.yourcashiertest.daos.CartDao;
import com.example.yourcashiertest.daos.ProductDao; import com.example.yourcashiertest.daos.ProductDao;
import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
...@@ -21,6 +24,7 @@ import java.util.concurrent.Executors; ...@@ -21,6 +24,7 @@ import java.util.concurrent.Executors;
public abstract class LocalDatabase extends RoomDatabase { public abstract class LocalDatabase extends RoomDatabase {
public abstract ProductDao productDao(); public abstract ProductDao productDao();
// public abstract CartDao cartDao();
private static volatile LocalDatabase INSTANCE; private static volatile LocalDatabase INSTANCE;
private static final int NUMBER_OF_THREADS = 4; private static final int NUMBER_OF_THREADS = 4;
...@@ -28,6 +32,27 @@ public abstract class LocalDatabase extends RoomDatabase { ...@@ -28,6 +32,27 @@ public abstract class LocalDatabase extends RoomDatabase {
public static final ExecutorService databaseWriteExecutor = public static final ExecutorService databaseWriteExecutor =
Executors.newFixedThreadPool(NUMBER_OF_THREADS); Executors.newFixedThreadPool(NUMBER_OF_THREADS);
// public static final Migration MIGRATION_1_2 = new Migration(1,2) {
// @Override
// public void migrate(@NonNull SupportSQLiteDatabase database) {
// database.execSQL("CREATE TABLE IF NOT EXISTS Cart (id INTEGER, idProduct INTEGER,price INTEGER, qty INTEGER,nameProduct TEXT, image TEXT)");
// }
// };
//
// public static final Migration MIGRATION_1_3 = new Migration(1,3) {
// @Override
// public void migrate(@NonNull SupportSQLiteDatabase database) {
// database.execSQL("DROP TABLE Cart");
// }
// };
//
// public static final Migration MIGRATION_1_4 = new Migration(1,4) {
// @Override
// public void migrate(@NonNull SupportSQLiteDatabase database) {
// database.execSQL("CREATE TABLE IF NOT EXISTS Cart (id INTEGER, idProduct INTEGER,price INTEGER, qty INTEGER,nameProduct TEXT, image TEXT)");
// }
// };
public static LocalDatabase getDatabase(Context context) { public static LocalDatabase getDatabase(Context context) {
if (INSTANCE == null) { if (INSTANCE == null) {
synchronized (LocalDatabase.class) { synchronized (LocalDatabase.class) {
......
...@@ -3,26 +3,45 @@ package com.example.yourcashiertest.entities; ...@@ -3,26 +3,45 @@ package com.example.yourcashiertest.entities;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity; import androidx.room.Entity;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
@Entity(tableName = "carts") @Entity
public class Cart implements Parcelable { public class Cart implements Parcelable {
@PrimaryKey(autoGenerate = true) @PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "id")
private long id; private long id;
Product item; @NonNull
long amount; @ColumnInfo(name = "idProduct")
long idProduct;
public Cart(Product item, long amount){ @NonNull
this.item = item; @ColumnInfo(name = "price")
this.amount = amount; long price;
}
@NonNull
@ColumnInfo(name = "qty")
long qty;
@NonNull
@ColumnInfo(name = "nameProduct")
String nameProduct;
@NonNull
@ColumnInfo(name = "image")
String image;
protected Cart(Parcel in) { protected Cart(Parcel in) {
id = in.readLong(); id = in.readLong();
item = in.readParcelable(Product.class.getClassLoader()); idProduct = in.readLong();
amount = in.readLong(); nameProduct = in.readString();
image = in.readString();
price = in.readLong();
qty = in.readLong();
} }
public static final Creator<Cart> CREATOR = new Creator<Cart>() { public static final Creator<Cart> CREATOR = new Creator<Cart>() {
...@@ -37,6 +56,14 @@ public class Cart implements Parcelable { ...@@ -37,6 +56,14 @@ public class Cart implements Parcelable {
} }
}; };
public Cart(long idProduct, String nameProduct, String image, long price, long qty){
this.idProduct = idProduct;
this.nameProduct = nameProduct;
this.image = image;
this.price = price;
this.qty = qty;
}
public long getId() { public long getId() {
return id; return id;
} }
...@@ -45,20 +72,44 @@ public class Cart implements Parcelable { ...@@ -45,20 +72,44 @@ public class Cart implements Parcelable {
this.id = id; this.id = id;
} }
public Product getItem() { public long getIdProduct() {
return item; return idProduct;
}
public void setIdProduct(long idProduct) {
this.idProduct = idProduct;
}
public String getNameProduct() {
return nameProduct;
}
public void setNameProduct(String nameProduct) {
this.nameProduct = nameProduct;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public long getPrice() {
return price;
} }
public void setItem(Product item) { public void setPrice(long price) {
this.item = item; this.price = price;
} }
public long getAmount() { public long getQty() {
return amount; return qty;
} }
public void setAmount(long amount) { public void setQty(long qty) {
this.amount = amount; this.qty = qty;
} }
@Override @Override
...@@ -69,7 +120,10 @@ public class Cart implements Parcelable { ...@@ -69,7 +120,10 @@ public class Cart implements Parcelable {
@Override @Override
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(id); dest.writeLong(id);
dest.writeParcelable(item, flags); dest.writeLong(idProduct);
dest.writeLong(amount); dest.writeString(nameProduct);
dest.writeString(image);
dest.writeLong(price);
dest.writeLong(qty);
} }
} }
package com.example.yourcashiertest.models;
public class CartModel {
long price, qty, idProduct;
String nameProduct, image;
public long getPrice() {
return price;
}
public void setPrice(long price) {
this.price = price;
}
public long getQty() {
return qty;
}
public void setQty(long qty) {
this.qty = qty;
}
public long getIdProduct() {
return idProduct;
}
public void setIdProduct(long idProduct) {
this.idProduct = idProduct;
}
public String getNameProduct() {
return nameProduct;
}
public void setNameProduct(String nameProduct) {
this.nameProduct = nameProduct;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
package com.example.yourcashiertest.repositories; package com.example.yourcashiertest.repositories;
import android.app.Application;
import androidx.lifecycle.LiveData;
import com.example.yourcashiertest.daos.CartDao;
import com.example.yourcashiertest.databases.LocalDatabase;
import com.example.yourcashiertest.entities.Cart;
import java.util.List;
public class CartRepository { public class CartRepository {
private CartDao cartDao;
private LiveData<List<Cart>> carts;
public CartRepository(Application application){
LocalDatabase db = LocalDatabase.getDatabase(application);
// cartDao = db.cartDao();
carts = cartDao.getCarts();
}
public void insert(Cart cart){
LocalDatabase.databaseWriteExecutor.execute(() -> cartDao.insertCart(cart));
}
public void update(Cart cart){
LocalDatabase.databaseWriteExecutor.execute(() -> cartDao.updateCart(cart));
}
public void delete(Cart cart){
LocalDatabase.databaseWriteExecutor.execute(() -> cartDao.deleteCart(cart));
}
public LiveData<List<Cart>> getAllCart(){
return this.carts;
}
} }
package com.example.yourcashiertest.viewmodels;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.example.yourcashiertest.models.CartModel;
import java.util.List;
public class CartVM extends ViewModel {
public MutableLiveData<List<CartModel>> allCart;
public MutableLiveData<List<CartModel>> getAllCart() {
return allCart;
}
public void setAllCart(List<CartModel> cart) {
this.allCart.postValue(cart);
}
}
package com.example.yourcashiertest.viewmodels; package com.example.yourcashiertest.viewmodels;
public class CartViewModel { import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.repositories.CartRepository;
import java.util.List;
public class CartViewModel extends AndroidViewModel {
private MutableLiveData<Cart> cart = new MutableLiveData<>();
private CartRepository repository;
private LiveData<List<Cart>> carts;
public CartViewModel(@NonNull Application application) {
super(application);
repository = new CartRepository(application);
this.carts = repository.getAllCart();
}
public LiveData<List<Cart>> getCarts(){
return this.carts;
}
public void insertCart(Cart cart){
repository.insert(cart);
}
public void updateCart(Cart cart){
repository.update(cart);
}
public void deleteCart(Cart cart){
repository.delete(cart);
}
public MutableLiveData<Cart> getCart(){
return this.cart;
}
} }
...@@ -5,9 +5,14 @@ ...@@ -5,9 +5,14 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
> >
<data> <data>
<variable
name="viewModelCart"
type="com.example.yourcashiertest.viewmodels.CartViewModel" />
<variable <variable
name="totalPrice" name="totalPrice"
type="String" /> type="String" />
<variable <variable
name="totalItems" name="totalItems"
type="String" /> type="String" />
...@@ -100,16 +105,18 @@ ...@@ -100,16 +105,18 @@
app:layout_constraintTop_toBottomOf="@+id/rvCartList" app:layout_constraintTop_toBottomOf="@+id/rvCartList"
app:layout_constraintVertical_bias="1.0" app:layout_constraintVertical_bias="1.0"
tools:layout_editor_absoluteX="39dp" /> tools:layout_editor_absoluteX="39dp" />
<include
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCartList" android:id="@+id/rvCartList"
layout="@layout/cart_item"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_marginTop="@dimen/space_default" android:layout_marginVertical="15dp"
app:layout_constraintStart_toStartOf="parent" android:padding="@dimen/space_small"
app:layout_constraintBottom_toTopOf="@id/btnCheckout"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view" app:layout_constraintTop_toBottomOf="@+id/view"
/> tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<data> <data>
<variable <variable
name="cartProduct" name="cartProduct"
type="com.example.yourcashiertest.entities.Product" /> type="com.example.yourcashiertest.entities.Cart" />
<variable <variable
name="qty" name="qty"
type="String" /> type="String" />
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<variable <variable
name="visibility" name="visibility"
type="Boolean" /> type="boolean" />
</data> </data>
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="@dimen/space_small" android:padding="@dimen/space_small"
android:visibility="visible" android:visibility="@{visibility ? View.VISIBLE : View.GONE}"
android:src="@drawable/ic_update" android:src="@drawable/ic_update"
app:layout_constraintBottom_toBottomOf="@+id/iv_product" app:layout_constraintBottom_toBottomOf="@+id/iv_product"
app:layout_constraintStart_toStartOf="@+id/iv_product" app:layout_constraintStart_toStartOf="@+id/iv_product"
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:padding="@dimen/space_small" android:padding="@dimen/space_small"
android:visibility="visible" android:visibility="@{visibility ? View.VISIBLE : View.GONE}"
android:src="@drawable/ic_delete" android:src="@drawable/ic_delete"
app:layout_constraintBottom_toBottomOf="@+id/iv_product" app:layout_constraintBottom_toBottomOf="@+id/iv_product"
app:layout_constraintEnd_toEndOf="@+id/iv_product" app:layout_constraintEnd_toEndOf="@+id/iv_product"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment