Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package foodsqlitedemo.quocnguyen.com.foodsqlitedemo;
- import android.Manifest;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.app.Dialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.net.Uri;
- import android.os.Bundle;
- //import android.support.annotation.NonNull;
- //import android.support.annotation.Nullable;
- //import android.support.v4.app.ActivityCompat;
- //import android.support.v7.app.AlertDialog;
- //import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.GridView;
- import android.widget.ImageView;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.core.app.ActivityCompat;
- import java.io.FileNotFoundException;
- import java.io.InputStream;
- import java.util.ArrayList;
- /**
- * Created by Quoc Nguyen on 13-Dec-16.
- */
- public class FoodList extends AppCompatActivity {
- GridView gridView;
- ArrayList<Food> list;
- FoodListAdapter adapter = null;
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.food_list_activity);
- gridView = (GridView) findViewById(R.id.gridView);
- list = new ArrayList<>();
- adapter = new FoodListAdapter(this, R.layout.food_items, list);
- gridView.setAdapter(adapter);
- // get all data from sqlite
- Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM FOOD");
- list.clear();
- while (cursor.moveToNext()) {
- int id = cursor.getInt(0);
- String name = cursor.getString(1);
- String price = cursor.getString(2);
- byte[] image = cursor.getBlob(3);
- list.add(new Food(name, price, image, id));
- }
- adapter.notifyDataSetChanged();
- gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
- CharSequence[] items = {"Update", "Delete"};
- AlertDialog.Builder dialog = new AlertDialog.Builder(FoodList.this);
- dialog.setTitle("Choose an action");
- dialog.setItems(items, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int item) {
- if (item == 0) {
- // update
- Cursor c = MainActivity.sqLiteHelper.getData("SELECT id FROM FOOD");
- ArrayList<Integer> arrID = new ArrayList<Integer>();
- while (c.moveToNext()){
- arrID.add(c.getInt(0));
- }
- // show dialog update at here
- showDialogUpdate(FoodList.this, arrID.get(position));
- } else {
- // delete
- Cursor c = MainActivity.sqLiteHelper.getData("SELECT id FROM FOOD");
- ArrayList<Integer> arrID = new ArrayList<Integer>();
- while (c.moveToNext()){
- arrID.add(c.getInt(0));
- }
- showDialogDelete(arrID.get(position));
- }
- }
- });
- dialog.show();
- return true;
- }
- });
- }
- ImageView imageViewFood;
- private void showDialogUpdate(Activity activity, final int position){
- final Dialog dialog = new Dialog(activity);
- dialog.setContentView(R.layout.update_food_activity);
- dialog.setTitle("Update");
- imageViewFood = (ImageView) dialog.findViewById(R.id.imageViewFood);
- final EditText edtName = (EditText) dialog.findViewById(R.id.edtName);
- final EditText edtPrice = (EditText) dialog.findViewById(R.id.edtPrice);
- Button btnUpdate = (Button) dialog.findViewById(R.id.btnUpdate);
- // set width for dialog
- int width = (int) (activity.getResources().getDisplayMetrics().widthPixels * 0.95);
- // set height for dialog
- int height = (int) (activity.getResources().getDisplayMetrics().heightPixels * 0.7);
- dialog.getWindow().setLayout(width, height);
- dialog.show();
- imageViewFood.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // request photo library
- ActivityCompat.requestPermissions(
- FoodList.this,
- new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
- 888
- );
- }
- });
- btnUpdate.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- MainActivity.sqLiteHelper.updateData(
- edtName.getText().toString().trim(),
- edtPrice.getText().toString().trim(),
- MainActivity.imageViewToByte(imageViewFood),
- position
- );
- dialog.dismiss();
- Toast.makeText(getApplicationContext(), "Update successfully!!!",Toast.LENGTH_SHORT).show();
- }
- catch (Exception error) {
- Log.e("Update error", error.getMessage());
- }
- updateFoodList();
- }
- });
- }
- private void showDialogDelete(final int idFood){
- final AlertDialog.Builder dialogDelete = new AlertDialog.Builder(FoodList.this);
- dialogDelete.setTitle("Warning!!");
- dialogDelete.setMessage("Are you sure you want to this delete?");
- dialogDelete.setPositiveButton("OK", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- try {
- MainActivity.sqLiteHelper.deleteData(idFood);
- Toast.makeText(getApplicationContext(), "Delete successfully!!!",Toast.LENGTH_SHORT).show();
- } catch (Exception e){
- Log.e("error", e.getMessage());
- }
- updateFoodList();
- }
- });
- dialogDelete.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- dialogDelete.show();
- }
- private void updateFoodList(){
- // get all data from sqlite
- Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM FOOD");
- list.clear();
- while (cursor.moveToNext()) {
- int id = cursor.getInt(0);
- String name = cursor.getString(1);
- String price = cursor.getString(2);
- byte[] image = cursor.getBlob(3);
- list.add(new Food(name, price, image, id));
- }
- adapter.notifyDataSetChanged();
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- if(requestCode == 888){
- if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
- Intent intent = new Intent(Intent.ACTION_PICK);
- intent.setType("image/*");
- startActivityForResult(intent, 888);
- }
- else {
- Toast.makeText(getApplicationContext(), "You don't have permission to access file location!", Toast.LENGTH_SHORT).show();
- }
- return;
- }
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if(requestCode == 888 && resultCode == RESULT_OK && data != null){
- Uri uri = data.getData();
- try {
- InputStream inputStream = getContentResolver().openInputStream(uri);
- Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
- imageViewFood.setImageBitmap(bitmap);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement