Advertisement
Guest User

Untitled

a guest
May 20th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.07 KB | None | 0 0
  1. package foodsqlitedemo.quocnguyen.com.foodsqlitedemo;
  2.  
  3. import android.Manifest;
  4. import android.app.Activity;
  5. import android.app.AlertDialog;
  6. import android.app.Dialog;
  7. import android.content.DialogInterface;
  8. import android.content.Intent;
  9. import android.content.pm.PackageManager;
  10. import android.database.Cursor;
  11. import android.graphics.Bitmap;
  12. import android.graphics.BitmapFactory;
  13. import android.net.Uri;
  14. import android.os.Bundle;
  15. //import android.support.annotation.NonNull;
  16. //import android.support.annotation.Nullable;
  17. //import android.support.v4.app.ActivityCompat;
  18. //import android.support.v7.app.AlertDialog;
  19. //import android.support.v7.app.AppCompatActivity;
  20. import android.util.Log;
  21. import android.view.View;
  22. import android.widget.AdapterView;
  23. import android.widget.Button;
  24. import android.widget.EditText;
  25. import android.widget.GridView;
  26. import android.widget.ImageView;
  27. import android.widget.Toast;
  28.  
  29. import androidx.annotation.NonNull;
  30. import androidx.annotation.Nullable;
  31. import androidx.appcompat.app.AppCompatActivity;
  32. import androidx.core.app.ActivityCompat;
  33.  
  34. import java.io.FileNotFoundException;
  35. import java.io.InputStream;
  36. import java.util.ArrayList;
  37.  
  38. /**
  39.  * Created by Quoc Nguyen on 13-Dec-16.
  40.  */
  41.  
  42. public class FoodList extends AppCompatActivity {
  43.  
  44.     GridView gridView;
  45.     ArrayList<Food> list;
  46.     FoodListAdapter adapter = null;
  47.  
  48.  
  49.     @Override
  50.     protected void onCreate(@Nullable Bundle savedInstanceState) {
  51.         super.onCreate(savedInstanceState);
  52.         setContentView(R.layout.food_list_activity);
  53.  
  54.         gridView = (GridView) findViewById(R.id.gridView);
  55.         list = new ArrayList<>();
  56.         adapter = new FoodListAdapter(this, R.layout.food_items, list);
  57.         gridView.setAdapter(adapter);
  58.  
  59.         // get all data from sqlite
  60.         Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM FOOD");
  61.         list.clear();
  62.         while (cursor.moveToNext()) {
  63.             int id = cursor.getInt(0);
  64.             String name = cursor.getString(1);
  65.             String price = cursor.getString(2);
  66.             byte[] image = cursor.getBlob(3);
  67.  
  68.             list.add(new Food(name, price, image, id));
  69.         }
  70.         adapter.notifyDataSetChanged();
  71.  
  72.         gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  73.             @Override
  74.             public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
  75.  
  76.                 CharSequence[] items = {"Update", "Delete"};
  77.                 AlertDialog.Builder dialog = new AlertDialog.Builder(FoodList.this);
  78.  
  79.                 dialog.setTitle("Choose an action");
  80.                 dialog.setItems(items, new DialogInterface.OnClickListener() {
  81.                     @Override
  82.                     public void onClick(DialogInterface dialog, int item) {
  83.                         if (item == 0) {
  84.                             // update
  85.                             Cursor c = MainActivity.sqLiteHelper.getData("SELECT id FROM FOOD");
  86.                             ArrayList<Integer> arrID = new ArrayList<Integer>();
  87.                             while (c.moveToNext()){
  88.                                 arrID.add(c.getInt(0));
  89.                             }
  90.                             // show dialog update at here
  91.                             showDialogUpdate(FoodList.this, arrID.get(position));
  92.  
  93.                         } else {
  94.                             // delete
  95.                             Cursor c = MainActivity.sqLiteHelper.getData("SELECT id FROM FOOD");
  96.                             ArrayList<Integer> arrID = new ArrayList<Integer>();
  97.                             while (c.moveToNext()){
  98.                                 arrID.add(c.getInt(0));
  99.                             }
  100.                             showDialogDelete(arrID.get(position));
  101.                         }
  102.                     }
  103.                 });
  104.                 dialog.show();
  105.                 return true;
  106.             }
  107.         });
  108.     }
  109.  
  110.     ImageView imageViewFood;
  111.     private void showDialogUpdate(Activity activity, final int position){
  112.  
  113.         final Dialog dialog = new Dialog(activity);
  114.         dialog.setContentView(R.layout.update_food_activity);
  115.         dialog.setTitle("Update");
  116.  
  117.         imageViewFood = (ImageView) dialog.findViewById(R.id.imageViewFood);
  118.         final EditText edtName = (EditText) dialog.findViewById(R.id.edtName);
  119.         final EditText edtPrice = (EditText) dialog.findViewById(R.id.edtPrice);
  120.         Button btnUpdate = (Button) dialog.findViewById(R.id.btnUpdate);
  121.  
  122.         // set width for dialog
  123.         int width = (int) (activity.getResources().getDisplayMetrics().widthPixels * 0.95);
  124.         // set height for dialog
  125.         int height = (int) (activity.getResources().getDisplayMetrics().heightPixels * 0.7);
  126.         dialog.getWindow().setLayout(width, height);
  127.         dialog.show();
  128.  
  129.         imageViewFood.setOnClickListener(new View.OnClickListener() {
  130.             @Override
  131.             public void onClick(View v) {
  132.                 // request photo library
  133.                 ActivityCompat.requestPermissions(
  134.                         FoodList.this,
  135.                         new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
  136.                         888
  137.                 );
  138.             }
  139.         });
  140.  
  141.         btnUpdate.setOnClickListener(new View.OnClickListener() {
  142.             @Override
  143.             public void onClick(View v) {
  144.                 try {
  145.                     MainActivity.sqLiteHelper.updateData(
  146.                             edtName.getText().toString().trim(),
  147.                             edtPrice.getText().toString().trim(),
  148.                             MainActivity.imageViewToByte(imageViewFood),
  149.                             position
  150.                     );
  151.                     dialog.dismiss();
  152.                     Toast.makeText(getApplicationContext(), "Update successfully!!!",Toast.LENGTH_SHORT).show();
  153.                 }
  154.                 catch (Exception error) {
  155.                     Log.e("Update error", error.getMessage());
  156.                 }
  157.                 updateFoodList();
  158.             }
  159.         });
  160.     }
  161.  
  162.     private void showDialogDelete(final int idFood){
  163.         final AlertDialog.Builder dialogDelete = new AlertDialog.Builder(FoodList.this);
  164.  
  165.         dialogDelete.setTitle("Warning!!");
  166.         dialogDelete.setMessage("Are you sure you want to this delete?");
  167.         dialogDelete.setPositiveButton("OK", new DialogInterface.OnClickListener() {
  168.             @Override
  169.             public void onClick(DialogInterface dialog, int which) {
  170.                 try {
  171.                     MainActivity.sqLiteHelper.deleteData(idFood);
  172.                     Toast.makeText(getApplicationContext(), "Delete successfully!!!",Toast.LENGTH_SHORT).show();
  173.                 } catch (Exception e){
  174.                     Log.e("error", e.getMessage());
  175.                 }
  176.                 updateFoodList();
  177.             }
  178.         });
  179.  
  180.         dialogDelete.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  181.             @Override
  182.             public void onClick(DialogInterface dialog, int which) {
  183.                 dialog.dismiss();
  184.             }
  185.         });
  186.         dialogDelete.show();
  187.     }
  188.  
  189.     private void updateFoodList(){
  190.         // get all data from sqlite
  191.         Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM FOOD");
  192.         list.clear();
  193.         while (cursor.moveToNext()) {
  194.             int id = cursor.getInt(0);
  195.             String name = cursor.getString(1);
  196.             String price = cursor.getString(2);
  197.             byte[] image = cursor.getBlob(3);
  198.  
  199.             list.add(new Food(name, price, image, id));
  200.         }
  201.         adapter.notifyDataSetChanged();
  202.     }
  203.  
  204.     @Override
  205.     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  206.  
  207.         if(requestCode == 888){
  208.             if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
  209.                 Intent intent = new Intent(Intent.ACTION_PICK);
  210.                 intent.setType("image/*");
  211.                 startActivityForResult(intent, 888);
  212.             }
  213.             else {
  214.                 Toast.makeText(getApplicationContext(), "You don't have permission to access file location!", Toast.LENGTH_SHORT).show();
  215.             }
  216.             return;
  217.         }
  218.         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  219.     }
  220.  
  221.     @Override
  222.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  223.  
  224.         if(requestCode == 888 && resultCode == RESULT_OK && data != null){
  225.             Uri uri = data.getData();
  226.             try {
  227.                 InputStream inputStream = getContentResolver().openInputStream(uri);
  228.                 Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
  229.                 imageViewFood.setImageBitmap(bitmap);
  230.  
  231.             } catch (FileNotFoundException e) {
  232.                 e.printStackTrace();
  233.             }
  234.         }
  235.  
  236.         super.onActivityResult(requestCode, resultCode, data);
  237.     }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement