From a63694021435ebdaf9128ee0b09da512dfe9a53c Mon Sep 17 00:00:00 2001 From: phanhuuloi27 <73208452+Nezumi2711@users.noreply.github.com> Date: Sun, 5 Jun 2022 12:23:50 +0700 Subject: [PATCH] Add update/delete function --- .../foodifyServer/Common/Common.java | 3 + .../com/waterbase/foodifyServer/Home.java | 116 ++++++++++++++++++ .../ViewHolder/MenuViewHolder.java | 13 +- 3 files changed, 131 insertions(+), 1 deletion(-) diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java index 04c0921..fb88ef2 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java @@ -4,4 +4,7 @@ import com.waterbase.foodifyServer.Model.User; public class Common { public static User currentUser; + + public static final String UPDATE = "Cập nhật"; + public static final String DELETE = "Xoá"; } diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java index 848dd57..d810c24 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java @@ -43,6 +43,7 @@ import com.rengwuxian.materialedittext.MaterialEditText; import com.squareup.picasso.Picasso; import com.waterbase.foodifyServer.Common.Category; import com.waterbase.foodifyServer.Common.Common; +import com.waterbase.foodifyServer.Interface.ItemClickListener; import com.waterbase.foodifyServer.ViewHolder.MenuViewHolder; import com.waterbase.foodifyServer.databinding.ActivityHomeBinding; @@ -239,6 +240,13 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int i) { viewHolder.txtMenuName.setText(model.getName()); Picasso.with(Home.this).load(model.getImage()).into(viewHolder.imageView); + + viewHolder.setItemClickListener(new ItemClickListener() { + @Override + public void onClick(View view, int position, boolean isLongClick) { + + } + }); } }; @@ -263,4 +271,112 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati return true; } + + @Override + public boolean onContextItemSelected(@NonNull MenuItem item) { + if(item.getTitle(). equals(Common.UPDATE)) + { + showUpdateDialog(adapter.getRef(item.getOrder()).getKey(), adapter.getItem(item.getOrder())); + } else if(item.getTitle().equals(Common.DELETE)) + { + deleteCategory(adapter.getRef(item.getOrder()).getKey()); + } + + return super.onContextItemSelected(item); + } + + private void deleteCategory(String key) { + categories.child(key).removeValue(); + Toast.makeText(this, "Xoá thành công!", Toast.LENGTH_SHORT).show(); + } + + private void showUpdateDialog(String key, Category item) { + AlertDialog.Builder alertDialog = new AlertDialog.Builder(Home.this); + alertDialog.setTitle("Cập nhật danh mục:"); + alertDialog.setMessage("Vui lòng điền đầy đủ thông tin"); + + LayoutInflater inflater = this.getLayoutInflater(); + View add_menu_layout = inflater.inflate(R.layout.add_new_menu_layout, null); + + edtName = add_menu_layout.findViewById(R.id.edtName); + btnSelect = add_menu_layout.findViewById(R.id.btnSelect); + btnUpload = add_menu_layout.findViewById(R.id.btnUpload); + + //Set default name + edtName.setText(item.getName()); + + //Event for button + btnSelect.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + chooseImage(); //Let user select image from Gallery and save Uri of this image + } + }); + + btnUpload.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + changeImage(item); + } + }); + + alertDialog.setView(add_menu_layout); + alertDialog.setIcon(R.drawable.ic_baseline_shopping_cart_24); + + alertDialog.setPositiveButton("Cập nhật", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + //Update information + item.setName(edtName.getText().toString()); + categories.child(key).setValue(item); + } + }); + + alertDialog.setNegativeButton("Thoát", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + alertDialog.show(); + } + + private void changeImage(Category item) { + if(saveUri != null) { + ProgressDialog mDialog = new ProgressDialog(this); + mDialog.setMessage("Đang tải lên...."); + mDialog.show(); + + String imageName = UUID.randomUUID().toString(); + StorageReference imageFolder = storageReference.child("/images/" + imageName); + imageFolder.putFile(saveUri) + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { + mDialog.dismiss(); + Toast.makeText(Home.this, "Đã cập nhật ảnh thành công!", Toast.LENGTH_SHORT).show(); + imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(Uri uri) { + item.setImage(uri.toString()); + + } + }); + } + }) + .addOnFailureListener((e) -> { + mDialog.dismiss(); + Toast.makeText(Home.this, e.getMessage(), Toast.LENGTH_SHORT).show(); + }) + .addOnProgressListener(new OnProgressListener() { + @Override + public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { + double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount()); + mDialog.setMessage("Đang tải " + progress + "%"); + } + }); + } + } } \ No newline at end of file diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/MenuViewHolder.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/MenuViewHolder.java index 4c42866..e95880f 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/MenuViewHolder.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/MenuViewHolder.java @@ -1,15 +1,17 @@ package com.waterbase.foodifyServer.ViewHolder; +import android.view.ContextMenu; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; +import com.waterbase.foodifyServer.Common.Common; import com.waterbase.foodifyServer.Interface.ItemClickListener; import com.waterbase.foodifyServer.R; -public class MenuViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ +public class MenuViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnCreateContextMenuListener{ public TextView txtMenuName; public ImageView imageView; @@ -21,6 +23,7 @@ public class MenuViewHolder extends RecyclerView.ViewHolder implements View.OnCl txtMenuName = (TextView) itemView.findViewById(R.id.menu_name); imageView = (ImageView) itemView.findViewById(R.id.menu_image); + itemView.setOnCreateContextMenuListener(this); itemView.setOnClickListener(this); } @@ -32,4 +35,12 @@ public class MenuViewHolder extends RecyclerView.ViewHolder implements View.OnCl public void onClick(View v) { itemClickListener.onClick(v, getAdapterPosition(), false); } + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { + menu.setHeaderTitle("Tuỳ chọn:"); + + menu.add(0,0, getAdapterPosition(), Common.UPDATE); + menu.add(0,1, getAdapterPosition(), Common.DELETE); + } }