Home > Mobile >  Android - How to Duplicate Items in recyclerview
Android - How to Duplicate Items in recyclerview

Time:01-25

I have been searching for quite some time to duplicate the items in recyclerview but all I see is the opposite of this problem. I am creating a notepad app and I want to duplicate the note the user created when they choose "Make a copy" option.

this is my NotesAdapter class:

package com.example.notepad.adapter;

import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.os.Looper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.notepad.R;
import com.example.notepad.activities.CreateNote;
import com.example.notepad.activities.MainActivity;
import com.example.notepad.activities.Utils;
import com.example.notepad.entities.Note;
import com.example.notepad.listeners.NoteListener;
import com.makeramen.roundedimageview.RoundedImageView;

import java.net.CacheRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.os.Handler;
public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.noteViewHolder> {

    private NoteListener noteListener;
    private List<Note> notes, notesSource;
    private Timer timer;
    private int theme;
    private Context context;

    public NotesAdapter(List<Note> notes, NoteListener noteListener, int theme, Context context){
        this.notes = notes;
        this.noteListener = noteListener;
        notesSource = notes;
        this.theme = theme;
        this.context = context;
    }


    @NonNull
    @Override
    public noteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new noteViewHolder(
                LayoutInflater.from(parent.getContext()).inflate(
                        R.layout.item_container_note, parent, false)
        );
    }

    @Override
    public void onBindViewHolder(@NonNull noteViewHolder holder, int position) {
        holder.setNote(notes.get(position), context.getResources().getString(getColorCodeFromColorIndex(notes.get(position).getColorIndex())));
        holder.layoutNote.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                noteListener.onNoteClicked(notes.get(position), position);
            }
        });
    }


    @Override
    public int getItemCount() {
        return notes.size();
    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }


    static class noteViewHolder extends RecyclerView.ViewHolder{

        TextView textTitle, textNote, textDateTime;
        LinearLayout layoutNote;
        RoundedImageView imageNote;

        public noteViewHolder(@NonNull View itemView) {
            super(itemView);
            textTitle = itemView.findViewById(R.id.textTitle);
            textNote = itemView.findViewById(R.id.textNote);
            textDateTime = itemView.findViewById(R.id.textdatetime);
            layoutNote = itemView.findViewById(R.id.LayoutNote);
            imageNote = itemView.findViewById(R.id.imagenote);
        }


        void setNote(Note note, String color ){
            textTitle.setText(note.getTitle());
            if(note.getNote().trim().isEmpty()){
                textNote.setVisibility(View.GONE);
            }
            else {
                textNote.setText(note.getNote());
            }
            textDateTime.setText(note.getDatetime());


            GradientDrawable gradientDrawable = (GradientDrawable) layoutNote.getBackground();
            gradientDrawable.setColor(Color.parseColor(color));

            if(note.getImage_path() != null){
                imageNote.setImageBitmap(BitmapFactory.decodeFile(note.getImage_path()));
                imageNote.setVisibility(View.VISIBLE);
            }else{
                imageNote.setVisibility(View.GONE);
            }
        }
    }

    public void SearchNotes(final String searchKeyboard){
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                if(searchKeyboard.trim().isEmpty()){
                    notes = notesSource;
                }else{
                    ArrayList<Note> temp = new ArrayList<>();
                    for (Note note : notesSource){
                        if(note.getTitle().toLowerCase().contains(searchKeyboard.toLowerCase())
                        || note.getNote().toLowerCase().contains(searchKeyboard.toLowerCase())){
                            temp.add(note);
                        }
                    }
                    notes = temp;
                }
                new Handler(Looper.getMainLooper()).post(new Runnable(){
                    @Override
                    public void run() {
                        notifyDataSetChanged();
                    }
                });
            }
        }, 500);
    }

    public void cancelTimer(){
        if(timer != null){
            timer.cancel();
        }
    }

    int getColorCodeFromColorIndex(int index) {
        switch (index) {
            case 0:
                return theme == 2 ?  R.color.DefaultNoteColorDay : R.color.DefaultNoteColor;
            case 1:
                return theme == 2 ?  R.color.noteColor2Day : R.color.noteColor2;
            case 2:
                return theme == 2 ?  R.color.noteColor3Day : R.color.noteColor3;
            case 3:
                return theme == 2 ?  R.color.noteColor4Day : R.color.noteColor4;
            case 4:
                return theme == 2 ?  R.color.noteColor5Day : R.color.noteColor5;
            default:
                return theme == 2 ?  R.color.DefaultNoteColorDay : R.color.DefaultNoteColor;
        }
    }
}

I can't include my CreateNote class as it exceeds the word limit.

CodePudding user response:

CreateNote class (Second Half)

 private void initMisc() {
        layoutMisc = findViewById(R.id.layoutMisc);
        bottomSheetBehavior = BottomSheetBehavior.from(layoutMisc);
        layoutMisc.findViewById(R.id.textMisc).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (bottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
                } else {
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                }
            }
        });
        final ImageView imageColor1 = layoutMisc.findViewById(R.id.imageColor1);
        final ImageView imageColor2 = layoutMisc.findViewById(R.id.imageColor2);
        final ImageView imageColor3 = layoutMisc.findViewById(R.id.imageColor3);
        final ImageView imageColor4 = layoutMisc.findViewById(R.id.imageColor4);
        final ImageView imageColor5 = layoutMisc.findViewById(R.id.imageColor5);

        theme = Utils.getTheme(this);
        switch (theme){
            case 2:
                layoutMisc.findViewById(R.id.color1).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#FFFFFF";
                        selectedColorIndex = 0;
                        imageColor1.setImageResource(R.drawable.ic_done_create);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color2).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#CCF49E";
                        selectedColorIndex = 1;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(R.drawable.ic_done_create);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color3).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#F8A39D";
                        selectedColorIndex = 2;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(R.drawable.ic_done_create);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color4).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#93CCC6";
                        selectedColorIndex = 3;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(R.drawable.ic_done_create);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color5).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#EFD074";
                        selectedColorIndex = 4;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(R.drawable.ic_done_create);
                        setLayoutBGColor();
                    }
                });
                if(availableNote != null && availableNote.getColor() != null && !availableNote.getColor().trim().isEmpty()) {
                    switch (availableNote.getColor()) {
                        case "#FFFFFF":
                            layoutMisc.findViewById(R.id.color1).performClick();
                            break;

                        case "#CCF49E":
                            layoutMisc.findViewById(R.id.color2).performClick();
                            break;

                        case "#F8A39D":
                            layoutMisc.findViewById(R.id.color3).performClick();
                            break;

                        case "#93CCC6":
                            layoutMisc.findViewById(R.id.color4).performClick();
                            break;

                        case "#EFD074":
                            layoutMisc.findViewById(R.id.color5).performClick();
                            break;
                    }
                }
                break;
            default:
                layoutMisc.findViewById(R.id.color1).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#333333";
                        selectedColorIndex = 0;
                        imageColor1.setImageResource(R.drawable.ic_done_create);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color2).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#354A36";
                        selectedColorIndex = 1;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(R.drawable.ic_done_create);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color3).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#3E2C47";
                        selectedColorIndex = 2;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(R.drawable.ic_done_create);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color4).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#26534F";
                        selectedColorIndex = 3;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(R.drawable.ic_done_create);
                        imageColor5.setImageResource(0);
                        setLayoutBGColor();
                    }
                });
                layoutMisc.findViewById(R.id.color5).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        selectedNoteColor = "#000000";
                        selectedColorIndex = 4;
                        imageColor1.setImageResource(0);
                        imageColor2.setImageResource(0);
                        imageColor3.setImageResource(0);
                        imageColor4.setImageResource(0);
                        imageColor5.setImageResource(R.drawable.ic_done_create);
                        setLayoutBGColor();
                    }
                });

                if(availableNote != null && availableNote.getColor() != null && !availableNote.getColor().trim().isEmpty()) {
                    switch (availableNote.getColor()) {
                        case "#333333":
                            layoutMisc.findViewById(R.id.color1).performClick();
                            break;

                        case "#354A36":
                            layoutMisc.findViewById(R.id.color2).performClick();
                            break;

                        case "#3E2C47":
                            layoutMisc.findViewById(R.id.color3).performClick();
                            break;

                        case "#26534F":
                            layoutMisc.findViewById(R.id.color4).performClick();
                            break;

                        case "#000000":
                            layoutMisc.findViewById(R.id.color5).performClick();
                            break;

                    }
                }
                break;
        }

        layoutMisc.findViewById(R.id.layoutAddImage).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                if (ContextCompat.checkSelfPermission(
                        getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE
                ) != PackageManager.PERMISSION_GRANTED
                ) {
                    ActivityCompat.requestPermissions(
                            CreateNote.this,
                            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                            REQUEST_CODE_STORAGE_POSITION
                    );
                }else{
                    selectImage();
                }
            }
        });

        layoutMisc.findViewById(R.id.layoutURL).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                showAddURLDialog();
            }
        });

        if(availableNote != null){
            layoutMisc.findViewById(R.id.layoutDelete).setVisibility(View.VISIBLE);
            layoutMisc.findViewById(R.id.layoutDelete).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                    showDeleteNoteLDialog();
                }
            });
        }


    }

    private void setLayoutBGColor(){
        coordinatorLayout.setBackgroundColor(Color.parseColor(getResources().getString(getColorCodeFromColorIndex(selectedColorIndex))));
    }

    private void selectImage(){
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        if(intent.resolveActivity(getPackageManager()) != null){
            startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode == REQUEST_CODE_STORAGE_POSITION && grantResults.length > 0){
            if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                selectImage();
            } else{
                Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_SELECT_IMAGE && resultCode == RESULT_OK) {
            if (data != null) {
                Uri selectedImageUri = data.getData();
                if (selectedImageUri != null) {
                    try {
                        InputStream inputStream = getContentResolver().openInputStream(selectedImageUri);
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                        imageNote.setImageBitmap(bitmap);
                        imageNote.setVisibility(View.VISIBLE);
                        findViewById(R.id.imageRemoveImage).setVisibility(View.VISIBLE);

                        selectedImagePath = getPathFromUri(selectedImageUri);

                    } catch (Exception exception) {
                        Toast.makeText(this, exception.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }
            }
        }
    }


    @RequiresApi(api = Build.VERSION_CODES.O)
    private String getPathFromUri(Uri contentUri){
        String filepath;
        Cursor cursor = getContentResolver().query(contentUri, null, null, null);
        if(cursor == null){
            filepath = contentUri.getPath();
        }else{
            cursor.moveToFirst();
            int index = cursor.getColumnIndex("_data");
            filepath = cursor.getString(index);
            cursor.close();
        }
        return filepath;
    }

    private void showAddURLDialog(){
        if(dialogaddUrl == null){
            AlertDialog.Builder builder = new AlertDialog.Builder(CreateNote.this);
            View view = LayoutInflater.from(this).inflate(R.layout.layout_add_url, findViewById(R.id.layoutaddURLcontainer));
            builder.setView(view);
            dialogaddUrl = builder.create();
            if(dialogaddUrl.getWindow() != null){
                dialogaddUrl.getWindow().setBackgroundDrawable(new ColorDrawable(0));
            }
            final  EditText inputURL = view.findViewById(R.id.inputURL);
            inputURL.requestFocus();

            view.findViewById(R.id.textAdd).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(inputURL.getText().toString().trim().isEmpty()){
                        Toast.makeText(CreateNote.this, "Enter URL", Toast.LENGTH_SHORT).show();
                    }
                    else if(!Patterns.WEB_URL.matcher(inputURL.getText().toString()).matches()){
                        Toast.makeText(CreateNote.this, "Enter valid URL", Toast.LENGTH_SHORT).show();
                    }
                    else{
                        textWebURL.setText(inputURL.getText().toString());
                        layoutWebURL.setVisibility(View.VISIBLE);
                        dialogaddUrl.dismiss();
                    }
                }
            });

            view.findViewById(R.id.textCancel).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    dialogaddUrl.dismiss();
                }
            });
        }
        dialogaddUrl.show();
    }

    private void showDeleteNoteLDialog(){
        if(dialogDeleteNote == null){
            AlertDialog.Builder builder = new AlertDialog.Builder(CreateNote.this);
            View view = LayoutInflater.from(this).inflate(R.layout.layout_delete_note, findViewById(R.id.layoutDeleteNoteContainer));
            builder.setView(view);
            dialogDeleteNote = builder.create();
            if(dialogDeleteNote.getWindow() != null){
                dialogDeleteNote.getWindow().setBackgroundDrawable(new ColorDrawable(0));
            }

            view.findViewById(R.id.deleteNoteOption).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    class DeleteNoteTask extends AsyncTask<Void, Void, Void>{

                        @Override
                        protected Void doInBackground(Void... voids) {
                            NotesDatabase.getDatabase(getApplicationContext()).notedao().deleteNote(availableNote);
                            return null;
                        }

                        @Override
                        protected void onPostExecute(Void unused) {
                            super.onPostExecute(unused);

                            Intent intent = new Intent();
                            intent.putExtra("isNoteDeleted", true);
                            setResult(RESULT_OK, intent);
                            finish();
                        }
                    }
                    new DeleteNoteTask().execute();
                }
            });

            view.findViewById(R.id.cancelOption).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    dialogDeleteNote.dismiss();
                }
            });
        }
        dialogDeleteNote.show();
    }

    int getColorCodeFromColorIndex(int index) {
        switch (index) {
            case 0:
                return theme == 2 ?  R.color.DefaultNoteColorDay : R.color.DefaultNoteColor;
            case 1:
                return theme == 2 ?  R.color.noteColor2Day : R.color.noteColor2;
            case 2:
                return theme == 2 ?  R.color.noteColor3Day : R.color.noteColor3;
            case 3:
                return theme == 2 ?  R.color.noteColor4Day : R.color.noteColor4;
            case 4:
                return theme == 2 ?  R.color.noteColor5Day : R.color.noteColor5;
            default:
                return theme == 2 ?  R.color.DefaultNoteColorDay : R.color.DefaultNoteColor;
        }
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event){
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            if (bottomSheetBehavior.getState()==BottomSheetBehavior.STATE_EXPANDED) {

                Rect outRect = new Rect();
                layoutMisc.getGlobalVisibleRect(outRect);

                if(!outRect.contains((int)event.getRawX(), (int)event.getRawY()))
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
            }
        }

        return super.dispatchTouchEvent(event);
    }


}

CodePudding user response:

CreateNote (First Half)

package com.example.notepad.activities;
    
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.notepad.R;
import com.example.notepad.database.NotesDatabase;
import com.example.notepad.entities.Note;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class CreateNote extends BaseActivity {

    private EditText inputTitle, inputNote;
    private TextView textDateTime, textWebURL;
    private CoordinatorLayout coordinatorLayout;
    private ImageView imageNote, deletetextURL;
    private LinearLayout layoutWebURL, layoutCopyNote;
    private FloatingActionButton doneFAB;
    private BottomSheetBehavior bottomSheetBehavior;
    private LinearLayout layoutMisc;

    private String selectedNoteColor;
    private int selectedColorIndex;
    private String selectedImagePath;
//    private String selectedBgImagePath;

    private static final int REQUEST_CODE_STORAGE_POSITION = 1;
    private static final int REQUEST_CODE_SELECT_IMAGE = 2;

    private AlertDialog dialogaddUrl;
    private AlertDialog dialogDeleteNote;

    private Note availableNote;
    int theme;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_create_note);

        inputTitle = findViewById(R.id.noteTitle);
        inputNote = findViewById(R.id.noteInput);
        textDateTime = findViewById(R.id.textDateTime);
        ImageView imageSave = findViewById(R.id.doneButton);
        coordinatorLayout = findViewById(R.id.layoutBGcolor);
        imageNote = findViewById(R.id.addImage);
        layoutWebURL = findViewById(R.id.layoutWebURL);
        textWebURL = findViewById(R.id.textURL);
        doneFAB = findViewById(R.id.doneFAB);
        layoutCopyNote = findViewById(R.id.copyNote);
        theme = Utils.getTheme(this);

        textDateTime.setText(
                new SimpleDateFormat("EEEE, dd MMMM yyyy HH:mm a", Locale.getDefault())
                        .format(new Date())
        );

        doneFAB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                saveNote();
            }
        });
        imageSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                saveNote();
            }
        });

        ImageView imageBack = findViewById(R.id.backButton);
        imageBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onBackPressed();
            }
        });

        if(theme == 1) {
            selectedNoteColor = "#333333";
        }
        else{
            selectedNoteColor = "#FFFFFF";
        }
        selectedColorIndex = 0;
        selectedImagePath = "";
//        selectedBgImagePath = "";

        if(getIntent().getBooleanExtra("isViewUpdate", false)){
            availableNote = (Note) getIntent().getSerializableExtra("note");
            setViewOrUpdateNote();
        }


        textWebURL.findViewById(R.id.textURL).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                textWebURL.setText(null);
                layoutWebURL.setVisibility(View.GONE);
//                NotesDatabase.getDatabase(getApplicationContext()).notedao().deleteURL(availableNote);
            }
        });

        findViewById(R.id.imageRemoveImage).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                imageNote.setImageBitmap(null);
                imageNote.setVisibility(View.GONE);
                findViewById(R.id.imageRemoveImage).setVisibility(View.GONE);
                selectedImagePath="";
            }
        });

        if(getIntent().getBooleanExtra("isFromQuickActions", false)){
            String type = getIntent().getStringExtra("quickActionType");
            if(type != null){
                if(type.equals("image")){
                    selectedImagePath = getIntent().getStringExtra("imagePath");
                    imageNote.setImageBitmap(BitmapFactory.decodeFile(selectedImagePath));
                    imageNote.setVisibility(View.VISIBLE);
                    findViewById(R.id.imageRemoveImage).setVisibility(View.VISIBLE);
                } else if(type.equals("URL")){
                    textWebURL.setText(getIntent().getStringExtra("URL"));
                    layoutWebURL.setVisibility(View.VISIBLE);
                }
            }
        }

        initMisc();
        setLayoutBGColor();
    }

    private void setViewOrUpdateNote(){
        inputTitle.setText(availableNote.getTitle());
        inputNote.setText(availableNote.getNote());
        textDateTime.setText(availableNote.getDatetime());
        textWebURL.setText(availableNote.getWeblink());
        if(availableNote.getImage_path() != null && !availableNote.getImage_path().trim().isEmpty()){
            imageNote.setImageBitmap(BitmapFactory.decodeFile(availableNote.getImage_path()));
            imageNote.setVisibility(View.VISIBLE);
            findViewById(R.id.imageRemoveImage).setVisibility(View.VISIBLE);
            selectedImagePath = availableNote.getImage_path();

        }

        if(availableNote.getWeblink() != null && !availableNote.getWeblink().trim().isEmpty()){
            textWebURL.setText(availableNote.getWeblink());
            layoutWebURL.setVisibility(View.VISIBLE);
        }

        selectedColorIndex = availableNote.getColorIndex();
        selectedNoteColor = availableNote.getColor();
    }

    private void saveNote(){
        if(inputTitle.getText().toString().trim().isEmpty()){
            Toast.makeText(this, "Note Title can't be empty", Toast.LENGTH_SHORT).show();
            return;
        }
        else if(inputTitle.getText().toString().trim().isEmpty() &&
        inputNote.getText().toString().trim().isEmpty()){
            Toast.makeText(this, "Note can't be empty", Toast.LENGTH_SHORT).show();
            return;
        }

        final Note note = new Note();

        note.setTitle(inputTitle.getText().toString());
        note.setNote(inputNote.getText().toString());
        note.setDatetime(textDateTime.getText().toString());
        note.setColor(selectedNoteColor);
        note.setColorIndex(selectedColorIndex);
        note.setImage_path(selectedImagePath);
//        note.setBg_image_path(selectedBgImagePath);

        if(layoutWebURL.getVisibility() == View.VISIBLE){
            note.setWeblink(textWebURL.getText().toString());
        }

        if(availableNote != null){
            note.setId(availableNote.getId());
        }

        @SuppressLint("StaticFieldLeak")
        class SaveNoteTask extends AsyncTask<Void, Void, Void> {

            @Override
            protected Void doInBackground(Void... voids) {
                NotesDatabase.getDatabase(getApplicationContext()).notedao().insertNote(note);
                return null;
            }

            @Override
            protected void onPostExecute(Void unused) {
                super.onPostExecute(unused);
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
            }
        }
        new SaveNoteTask().execute();
    }
  •  Tags:  
  • Related