user3506
user3506

Reputation: 119

CustomAdapter is not displaying ArrayList Item: ImageView

In my CheckOutMemo.class I can set any title and content as shown in picture. Check

MainActivity.class then retrieves this title and content without any problems and displays a custom row. Like in this picture:

Title = Header

Content = bodyText

MainActivity class

But the problem is: When I take a picture - I can't display it on my custom row. (That little dog in my MainActivity is there by default). I don't know what the problem is.

I can preview my captured image as an Bitmap in my CheckOutMemo.class's contentView. I can successfully save it to my External Storage. But I can't display it on my MainActivity.

MAINACTIVITY.CLASS

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemLongClickListener, AdapterView.OnItemClickListener {

public ImageView view;
private String[] mPermission = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
private static final int REQUEST_CODE_PERMISSION = 5;
CustomAdapter customAdapter;
ListView listView;
Intent intent;
final Context context = this;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    customAdapter = new CustomAdapter();
    listView = (ListView) findViewById(R.id.myListView);
    listView.setAdapter(customAdapter);
    listView.setOnItemLongClickListener(this);
    listView.setOnItemClickListener(this);
    view = (ImageView) this.findViewById(R.id.imageIcon);

    if (ActivityCompat.checkSelfPermission(MainActivity.this, mPermission[0])
            != MockPackageManager.PERMISSION_GRANTED ||
            ActivityCompat.checkSelfPermission(MainActivity.this, mPermission[1])
                    != MockPackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(MainActivity.this,
                mPermission, REQUEST_CODE_PERMISSION);
    }
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Memo memo = customAdapter.getItem(position);
    intent = new Intent(getApplicationContext(), CheckOutMemo.class);
    intent.putExtra("header", memo.header);
    intent.putExtra("bodyText", memo.bodyText);
    intent.putExtra("position", position);

    // launches edit request and saving existing item.
    startActivityForResult(intent, CheckOutMemo.EDIT_REQUEST_CODE);
}

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    alertDialogBuilder.setTitle("Confirm Delete");
    alertDialogBuilder.setMessage("Delete memo?");
    alertDialogBuilder.setCancelable(false);
    alertDialogBuilder.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            customAdapter.delete(position);
            customAdapter.notifyDataSetChanged();
        }
    });
    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.cancel();
        }
    });
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();

    return true;
}

public void addNewNote(View view) {
    Intent intent = new Intent(getApplicationContext(), CheckOutMemo.class);
    //Adding new listItem to the ArrayList.
    startActivityForResult(intent, CheckOutMemo.ADD_REQUEST_CODE);
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode != Activity.RESULT_OK) {
        return;
    }
    if (requestCode == CheckOutMemo.ADD_REQUEST_CODE) {
        String header = data.getStringExtra("header");
        String bodyText = data.getStringExtra("bodyText");
        if (getIntent().hasExtra("byteArray")) {
            Bitmap bitmap = BitmapFactory.decodeByteArray(
                    getIntent().getByteArrayExtra("byteArray"), 0, getIntent().getByteArrayExtra("byteArray").length);
            view.setImageBitmap(bitmap);
        }
        Memo memo = new Memo(header, bodyText, view);
        customAdapter.add(memo);
        customAdapter.notifyDataSetChanged();
    }

    if (requestCode == CheckOutMemo.EDIT_REQUEST_CODE) {

        int position = data.getIntExtra("position", 0);
        Memo memo = customAdapter.getItem(position);
        memo.header = data.getStringExtra("header");
        memo.bodyText = data.getStringExtra("bodyText");
        customAdapter.notifyDataSetChanged();
    }
  }
}

CHECKOUTMEMO.CLASS

public class CheckOutMemo extends AppCompatActivity {
public static final int ADD_REQUEST_CODE = 1;
public static final int EDIT_REQUEST_CODE = 2;
public static final int REQUEST_IMAGE_CAPTURE = 1337;
public String fileName;
public Bitmap bitmap;
private int position;
EditText editableTitle;
EditText editableContent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);
    Intent intent = getIntent();
    editableTitle = (EditText) findViewById(R.id.editHeader);
    editableContent = (EditText) findViewById(R.id.editBodyText);
    editableTitle.setText(intent.getStringExtra("header"));
    editableContent.setText(intent.getStringExtra("bodyText"));
    checkIfUserChangedOrWroteAnyText();
    //Declaring keyword and default position.
    position = intent.getIntExtra("position", 0);
}

public void capturePhoto(View view) {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // Ensure that there's a camera activity to handle the intent
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        // Create the File where the photo should go
        File photoFile = null;
        try {
            photoFile = createImageFile();
        } catch (IOException ex) {
            // Error occurred while creating the File

        }
        // Continue only if the File was successfully created
        if (photoFile != null) {
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                    Uri.fromFile(photoFile));
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {

        try {
            loadImageFromFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public void loadImageFromFile() throws IOException {

    ImageView view = (ImageView)this.findViewById(R.id.primeImage);
    view.setVisibility(View.VISIBLE);
    int targetW = view.getWidth();
    int targetH = view.getHeight();

    // Get the dimensions of the bitmap
    BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(fileName, bmOptions);
    int photoW = bmOptions.outWidth;
    int photoH = bmOptions.outHeight;

    // Determine how much to scale down the image
    int scaleFactor = Math.min(photoW/targetW, photoH/targetH);

    // Decode the image file into a Bitmap sized to fill the View
    bmOptions.inJustDecodeBounds = false;
    bmOptions.inSampleSize = scaleFactor;
    bitmap = BitmapFactory.decodeFile(fileName, bmOptions);
    view.setImageBitmap(bitmap);

}

public void createImageFromBitmap(){
    if(bitmap!=null) {
        Intent i = new Intent(this, MainActivity.class);
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 20, bs);
        i.putExtra("byteArray", bs.toByteArray());
        startActivity(i);
    } else {
        Toast.makeText(CheckOutMemo.this, "Bitmap is null", Toast.LENGTH_SHORT).show();
    }
}

public void onSaveClick(View view){
    String editableContentString = editableContent.getText().toString();
    String editableTitleString = editableTitle.getText().toString();
    if(TextUtils.isEmpty(editableContentString) && TextUtils.isEmpty(editableTitleString)) {
        finish();
        Toast.makeText(CheckOutMemo.this, "No content to save, note discarded", Toast.LENGTH_SHORT).show();
    }
    else {
        if ((TextUtils.isEmpty(editableTitleString))) {
            editableTitleString.equals(editableContentString);
            Intent intent = new Intent();
            createImageFromBitmap();
            intent.putExtra("header", editableContent.getText().toString());
            intent.putExtra("position", position);

            //Sending userInput back to MainActivity.
            setResult(Activity.RESULT_OK, intent);
            finish();

        } else {
            Intent intent = new Intent();
            createImageFromBitmap();
            intent.putExtra("header", editableTitle.getText().toString());
            intent.putExtra("bodyText", editableContent.getText().toString());
            intent.putExtra("position", position);
            //Sending userInput back to MainActivity.
            setResult(Activity.RESULT_OK, intent);
            finish();
        }
    }
}

public void cancelButtonClickedAfterEdit() {
    Button button = (Button) findViewById(R.id.bigCancelButton);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View v) {
            openDialogFragment(v);
        }
    });
}

public File createImageFile() throws IOException {
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        String folder_main = "DNote";
        String path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES).toString() + File.separator + folder_main;
        File storageDir = new File(path);
        if (!storageDir.exists()) {
            storageDir.mkdir();
        }
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );

        // Save a file: path for use with ACTION_VIEW intents
        fileName =  image.getAbsolutePath();
        MediaScannerConnection.scanFile(getApplicationContext(), new String[]{image.getPath()}, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    @Override
                    public void onScanCompleted(String path, Uri uri) {
//                        Log.i(TAG, "Scanned " + path);
                    }
                });
        return image;
    }


@Override
public void onBackPressed() {
    openDialogFragment(null);
}
public void onCancelClick(View view){
    finish();

}
}

CUSTOMADAPTER.CLASS

public class CustomAdapter extends BaseAdapter {



ArrayList<Memo> memos = new ArrayList<>();

public void add(Memo memo) {
    this.memos.add(memo);
}

public void delete(int position) {
    memos.remove(position);
}

@Override
public Memo getItem(int position) {
    return memos.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getCount() {
    return memos.size();
}

class MyViewHolder {
    public TextView header, bodyText;
    public ImageView imageView;

    public MyViewHolder(View view) {
        header = (TextView) view.findViewById(R.id.header);
        bodyText = (TextView) view.findViewById(R.id.bodyText);
        imageView = (ImageView) view.findViewById(R.id.primeImage);

    }
}

@Override
public View getView(final int position, View convertView, ViewGroup parent){

    MyViewHolder viewHolder;
    if(null == convertView){
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        convertView = inflater.inflate(R.layout.custom_row, parent, false);
        viewHolder = new MyViewHolder(convertView);
        viewHolder.header.setTag(position);

        convertView.setTag(viewHolder);

    }
    else{
        viewHolder = (MyViewHolder) convertView.getTag();
    }

    Memo memo = getItem(position);
    viewHolder.header.setText(memo.header);
    viewHolder.bodyText.setText(memo.bodyText);
    CheckOutMemo checkOutMemo = new CheckOutMemo();;
    if(checkOutMemo.bitmap!=null) {
        viewHolder.imageView.setImageBitmap(checkOutMemo.bitmap);
    }

    return convertView;
}


}

MEMO.CLASS

public class Memo {

    public String header, bodyText;
    public ImageView imageView;

    public Memo(String header, String bodyText, ImageView imageView){
        this.header = header;
        this.bodyText =  bodyText;
        this.imageView = imageView;
    }
}

I've been working on this for over 2 months every day. Any help would be appreciated!!

Upvotes: 1

Views: 115

Answers (1)

Dave Thomas
Dave Thomas

Reputation: 3827

Ok here is the minimal viable solution to get what you want. I just fixed it enough so an image is returned to your main activity. The rest of your issues are for you to fix. The only class I haven't touched is your Memo class. But that being said I highly recommend you update it to store a String with the path to the image instead of an ImageView.

But if for you what you want to do here are your files edited to work:

First custom adapter:

I've changed the lines where you get the image from memo, to check it's image view for a bitmap drawable and transfer that bitmap to the row's image view. There was no need to instantiate that CheckoutMemo activity here.

public class CustomAdapter extends BaseAdapter {



    ArrayList<Memo> memos = new ArrayList<>();

    public void add(Memo memo) {
        this.memos.add(memo);
    }

    public void delete(int position) {
        memos.remove(position);
    }

    @Override
    public Memo getItem(int position) {
        return memos.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getCount() {
        return memos.size();
    }

    class MyViewHolder {
        public TextView header, bodyText;
        public ImageView imageView;

        public MyViewHolder(View view) {
            header = (TextView) view.findViewById(R.id.header);
            bodyText = (TextView) view.findViewById(R.id.bodyText);
            imageView = (ImageView) view.findViewById(R.id.primeImage);

        }
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent){

        MyViewHolder viewHolder;
        if(null == convertView){
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.custom_row, parent, false);
            viewHolder = new MyViewHolder(convertView);
            viewHolder.header.setTag(position);

            convertView.setTag(viewHolder);

        }
        else{
            viewHolder = (MyViewHolder) convertView.getTag();
        }

        Memo memo = getItem(position);
        viewHolder.header.setText(memo.header);
        viewHolder.bodyText.setText(memo.bodyText);
        if (memo.imageView.getDrawable() instanceof BitmapDrawable) {
            BitmapDrawable bitmapDrawable = (BitmapDrawable) memo.imageView.getDrawable();
            viewHolder.imageView.setImageBitmap(bitmapDrawable.getBitmap());
        }

        return convertView;
    }


}

Next your CheckoutMemo:

I've changed how your setResult methods work. I've also deleted the method createImageFromBitmap. It was problematic, and also caused confusion. That one was a doozy. The createImageFromBitmap method was creating another MainActivity... confused me for a bit why onActivityResult wasn't being called. It wasn't being called because you were creating another activity =/

Anyways in your intent you create with your results, you'll notice I am also adding the file path string to the image created. So that main activity can use it to get the image!

public class CheckOutMemo extends AppCompatActivity {
    public static final int ADD_REQUEST_CODE = 1;
    public static final int EDIT_REQUEST_CODE = 2;
    public static final int REQUEST_IMAGE_CAPTURE = 1337;
    public String fileName;
    public Bitmap bitmap;
    private int position;
    EditText editableTitle;
    EditText editableContent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        Intent intent = getIntent();
        editableTitle = (EditText) findViewById(R.id.editHeader);
        editableContent = (EditText) findViewById(R.id.editBodyText);
        editableTitle.setText(intent.getStringExtra("header"));
        editableContent.setText(intent.getStringExtra("bodyText"));
        //checkIfUserChangedOrWroteAnyText();
        //Declaring keyword and default position.
        position = intent.getIntExtra("position", 0);
    }

    public void capturePhoto(View view) {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Ensure that there's a camera activity to handle the intent
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // Create the File where the photo should go
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {
                // Error occurred while creating the File

            }
            // Continue only if the File was successfully created
            if (photoFile != null) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                        Uri.fromFile(photoFile));
                startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
            }
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {

            try {
                loadImageFromFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public void loadImageFromFile() throws IOException {

        ImageView view = (ImageView)this.findViewById(R.id.primeImage);
        view.setVisibility(View.VISIBLE);
        int targetW = view.getWidth();
        int targetH = view.getHeight();

        // Get the dimensions of the bitmap
        BitmapFactory.Options bmOptions = new BitmapFactory.Options();
        bmOptions.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(fileName, bmOptions);
        int photoW = bmOptions.outWidth;
        int photoH = bmOptions.outHeight;

        // Determine how much to scale down the image
        int scaleFactor = Math.min(photoW/targetW, photoH/targetH);

        // Decode the image file into a Bitmap sized to fill the View
        bmOptions.inJustDecodeBounds = false;
        bmOptions.inSampleSize = scaleFactor;
        bitmap = BitmapFactory.decodeFile(fileName, bmOptions);
        view.setImageBitmap(bitmap);

    }

    public void onSaveClick(View view){
        String editableContentString = editableContent.getText().toString();
        String editableTitleString = editableTitle.getText().toString();
        if(TextUtils.isEmpty(editableContentString) && TextUtils.isEmpty(editableTitleString)) {
            finish();
            Toast.makeText(CheckOutMemo.this, "No content to save, note discarded", Toast.LENGTH_SHORT).show();
        }
        else {
            if ((TextUtils.isEmpty(editableTitleString))) {
                editableTitleString.equals(editableContentString);
                Intent intent = new Intent();
                //createImageFromBitmap();
                intent.putExtra("header", editableContent.getText().toString());
                intent.putExtra("position", position);
                intent.putExtra("photo", fileName);

                //Sending userInput back to MainActivity.
                setResult(AppCompatActivity.RESULT_OK, intent);
                finish();

            } else {
                Intent intent = new Intent();
                //createImageFromBitmap();
                intent.putExtra("header", editableTitle.getText().toString());
                intent.putExtra("bodyText", editableContent.getText().toString());
                intent.putExtra("photo", fileName);
                intent.putExtra("position", position);
                //Sending userInput back to MainActivity.
                setResult(AppCompatActivity.RESULT_OK, intent);
                finish();
            }
        }
    }

    public void cancelButtonClickedAfterEdit() {
        Button button = (Button) findViewById(R.id.bigCancelButton);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                //openDialogFragment(v);
            }
        });
    }

    public File createImageFile() throws IOException {
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        String folder_main = "DNote";
        String path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES).toString() + File.separator + folder_main;
        File storageDir = new File(path);
        if (!storageDir.exists()) {
            storageDir.mkdir();
        }
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );

        // Save a file: path for use with ACTION_VIEW intents
        fileName =  image.getAbsolutePath();
        MediaScannerConnection.scanFile(getApplicationContext(), new String[]{image.getPath()}, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    @Override
                    public void onScanCompleted(String path, Uri uri) {
//                        Log.i(TAG, "Scanned " + path);
                    }
                });
        return image;
    }


    @Override
    public void onBackPressed() {
        //openDialogFragment(null);
    }
    public void onCancelClick(View view){
        finish();

    }
}

Finally your MainActivity:

In on activity result if the photo path exists. Then I am adding it to the memo object's image view to later be retrieved by the adapters ImageView. This can be upgraded a bit hence my comments above to be a little less convoluted by just passing the file path ;)

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemLongClickListener,
        AdapterView.OnItemClickListener {

    public ImageView view;
    private String[] mPermission = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
    private static final int REQUEST_CODE_PERMISSION = 5;
    CustomAdapter customAdapter;
    ListView listView;
    Intent intent;
    final Context context = this;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        customAdapter = new CustomAdapter();
        listView = (ListView) findViewById(R.id.myListView);
        listView.setAdapter(customAdapter);
        listView.setOnItemLongClickListener(this);
        listView.setOnItemClickListener(this);
        //view = (ImageView) this.findViewById(R.id.imageIcon);

        if (ActivityCompat.checkSelfPermission(MainActivity.this, mPermission[0])
                != MockPackageManager.PERMISSION_GRANTED ||
                ActivityCompat.checkSelfPermission(MainActivity.this, mPermission[1])
                        != MockPackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(MainActivity.this,
                    mPermission, REQUEST_CODE_PERMISSION);
        }
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Memo memo = customAdapter.getItem(position);
        intent = new Intent(getApplicationContext(), CheckOutMemo.class);
        intent.putExtra("header", memo.header);
        intent.putExtra("bodyText", memo.bodyText);
        intent.putExtra("position", position);

        // launches edit request and saving existing item.
        startActivityForResult(intent, CheckOutMemo.EDIT_REQUEST_CODE);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
        alertDialogBuilder.setTitle("Confirm Delete");
        alertDialogBuilder.setMessage("Delete memo?");
        alertDialogBuilder.setCancelable(false);
        alertDialogBuilder.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                customAdapter.delete(position);
                customAdapter.notifyDataSetChanged();
            }
        });
        alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.cancel();
            }
        });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();

        return true;
    }

    public void addNewNote(View view) {
        Intent intent = new Intent(getApplicationContext(), CheckOutMemo.class);
        //Adding new listItem to the ArrayList.
        startActivityForResult(intent, CheckOutMemo.ADD_REQUEST_CODE);
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode != Activity.RESULT_OK) {
            return;
        }
        if (requestCode == CheckOutMemo.ADD_REQUEST_CODE) {
            String header = data.getStringExtra("header");
            String bodyText = data.getStringExtra("bodyText");
            File photo = new File(data.getStringExtra("photo"));
            ImageView view = new ImageView(this);

            if (photo.exists()) {
                Bitmap myBitmap = BitmapFactory.decodeFile(photo.getAbsolutePath());
                view.setImageBitmap(myBitmap);
            }

            Memo memo = new Memo(header, bodyText, view);
            customAdapter.add(memo);
            customAdapter.notifyDataSetChanged();
        }

        if (requestCode == CheckOutMemo.EDIT_REQUEST_CODE) {

            int position = data.getIntExtra("position", 0);
            Memo memo = customAdapter.getItem(position);
            memo.header = data.getStringExtra("header");
            memo.bodyText = data.getStringExtra("bodyText");
            File photo = new File(data.getStringExtra("photo"));

            if (photo.exists()) {
                Bitmap myBitmap = BitmapFactory.decodeFile(photo.getAbsolutePath());
                memo.imageView.setImageBitmap(myBitmap);
            }
            customAdapter.notifyDataSetChanged();
        }
    }
}

All in all, running this I can now see images in the notes created!

Keep at your project here. Two months is a good commitment. You are doing great, keep up the good work. There are more things you can improve in there! Just keep massaging it, and never give up.

You rock =)

I can get you the working project I've created to test this if needed.

Upvotes: 1

Related Questions