How to get recyclerview image data in mainactivity

What I'm trying to do is get images from the gallery and camera and put them in recyclerview. Now the main parts appear after the image is now placed in recyclerview, but someone can just tell me how I can return these images shown in recyclerview back to mainActivity only when I click the "Download" button.

Thanks in advance.

My main activity.

package www.welkinfort.com.pphc;

import android.app.DatePickerDialog;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.ExifInterface;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import butterknife.ButterKnife;

public class XenImageUploading extends AppCompatActivity implements AdapterView.OnItemSelectedListener, View.OnClickListener {
    ArrayAdapter<String> des_dataAdapter;
    ArrayList<String> discription_list = new ArrayList<>();
    //@BindView(R.id.selct_prject_spinner)
    Spinner select_pro_spn;
    TextView datetextTextView;
    Calendar myCalendar;
    static Bitmap rotatedBitmap;
    static Bitmap finalrotatedBitmap;
    DatePickerDialog.OnDateSetListener date;
    static final int REQUEST_TAKE_PHOTO = 1;
    private int SELECT_FILE = 2;
    private static String bitmap_overdraw_str;
    private static ImageButton cameraclick;
    private static ImageButton galleryclick;
    private static ImageButton videoclick;
    private static String mCurrentPhotoPath;
    private static RecyclerView recyclerView;
    ArrayList<Data_Model> arrayList;
    ImageView image_view;
    MyAdapter m;
    Bitmap finalbitmap;
    static String clickpath;
    int i = 0;
    String path ;
    private static final String TAG = "XenImageUploading";
    static File photoFile_1 = null;
    private String userChoosenTask;
    private Uri fileUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.xen_image_upload);
        ButterKnife.bind(this);
        setTitle("XEN IMAGE UPLOAD");
        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        cameraclick = (ImageButton) findViewById(R.id.camera_btn);
        galleryclick = (ImageButton) findViewById(R.id.gallery_btn);
        image_view = (ImageView) findViewById(R.id.image_view);
        arrayList = new ArrayList<>();
        Log.d("oncreate", "set adapter");

        bitmap_overdraw_str = "Lat:" + "aaaaaaaa" + "\nLong:" + "aaaaaaaa" + "\nDate:" + "aaaaaaaa";
        recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
        ///////////////////////////////////////////////////////////////////
        //select_pro_spn = (Spinner) findViewById(R.id.selct_prject_spinner);
        //datetextTextView = (TextView) findViewById(R.id.selctdate__txtv);
        discription_list.add("Traffic light broken/not working");
        discription_list.add("Traffic light pole hit by vehicle");
        discription_list.add("No electricity connection");
        discription_list.add("Traffic light not visible/partially visible");
//        select_pro_spn.setOnItemSelectedListener(this);
        // Creating adapter for spinner
        des_dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, discription_list);
        // Drop down layout style - list view with radio button
        des_dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // attaching data adapter to spinner
//        select_pro_spn.setAdapter(des_dataAdapter);
        myCalendar = Calendar.getInstance();
        date = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
                // TODO Auto-generated method stub
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH, monthOfYear);
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateLabel();
            }
        };
//        datetextTextView.setOnClickListener(new View.OnClickListener() {
//
//            @Override
//            public void onClick(View v) {
//                // TODO Auto-generated method stub
//                new DatePickerDialog(XenImageUploading.this, date, myCalendar
//                        .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
//                        myCalendar.get(Calendar.DAY_OF_MONTH)).show();
//            }
//        });

        cameraclick.setOnClickListener(this);
        galleryclick.setOnClickListener(this);
        recyclerView.setOnClickListener(this);
    }

    private void updateLabel() {
        String myFormat = "MM-dd-yyyy"; //In which you need put here
        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
        datetextTextView.setText(sdf.format(myCalendar.getTime()));
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        switch (parent.getId()) {
//            case R.id.selct_prject_spinner:
//                String selected_intersection = parent.getSelectedItem().toString();
//                Log.e("Selected item ", selected_intersection);
//                //parent.notifyAll();
//                break;
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.camera_btn:
                selectImage();
                break;
            case R.id.recycler_view:
               getImageall();
                break;
            case R.id.gallery_btn:
                Intent i = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                i.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                i.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(i, SELECT_FILE);
                break;
        }
    }

    private void getImageall() {

    }

    private void selectImage() {
        takepicture();
    }


    public void takepicture() {
        Log.d(TAG, "takepicture");

        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);


        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            try {
                photoFile_1 = createImageFile();
            } catch (IOException ex) {
                // Error occurred while creating the File
            }
            // Continue only if the File was successfully created
            if (photoFile_1 != null) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                        Uri.fromFile(photoFile_1));
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
        }
    }

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

        if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK && null != data) {
            // Save Image To Gallery
            Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            File f = new File(mCurrentPhotoPath);
            Uri contentUri = Uri.fromFile(f);
            mediaScanIntent.setData(contentUri);
            this.sendBroadcast(mediaScanIntent);
            ////////////////setting image to adapter on capturing///////////////////////////
            clickpath = mCurrentPhotoPath;
            Bitmap bitmap = BitmapUtility.decodeSampledBitmapFromResource(clickpath, 560, 300);
            setCameraDisplayOrientation(bitmap);
            try {
                FileOutputStream fos = new FileOutputStream(photoFile_1);
                finalrotatedBitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);
                fos.close();
            } catch (FileNotFoundException e) {
                Log.d(TAG, "File not found: " + e.getMessage());
            } catch (IOException e) {
                Log.d(TAG, "Error accessing file: " + e.getMessage());
            }
            Data_Model data_model = new Data_Model();
            data_model.setImage(finalrotatedBitmap);
            image_view.setImageBitmap(finalrotatedBitmap);
            arrayList.add(data_model);
            m = new MyAdapter(this, arrayList);
            recyclerView.setAdapter(m);
            m.notifyDataSetChanged();
        }
        if (requestCode == SELECT_FILE && resultCode == RESULT_OK && null != data) {
            InputStream stream = null;
            Uri uri = data.getData();
            //for (int i =0 ; i<numberOfImages ;i++){
                getImagePath(uri);
                Data_Model data_model = new Data_Model();
                data_model.setImage(finalbitmap);
                image_view.setImageBitmap(finalbitmap);
                arrayList.add(data_model);
                m = new MyAdapter(this, arrayList);
                recyclerView.setAdapter(m);
                m.notifyDataSetChanged();
           // }
        }
    }

    public String getImagePath(Uri uri) {
        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        cursor.moveToFirst();
        String document_id = cursor.getString(0);
        document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
        cursor.close();

        cursor = getContentResolver().query(
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
        cursor.moveToFirst();
        path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
        cursor.close();

        finalbitmap = BitmapUtility.decodeSampledBitmapFromResource(path, 560, 300);
        //targetImage = (ImageView)findViewById(R.id.imageView1);
        image_view.setImageBitmap(finalbitmap);
        return path;
    }

    public static void setCameraDisplayOrientation(Bitmap fileresult) {
        Log.e(TAG, "setCameraDisplayOrientation");
        BitmapFactory.Options bounds = new BitmapFactory.Options();
        bounds.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(clickpath, bounds);
        BitmapFactory.Options opts = new BitmapFactory.Options();
        Bitmap bm = BitmapFactory.decodeFile(clickpath, opts);
        ExifInterface exif = null;
        try {
            exif = new ExifInterface(clickpath);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String orientString = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
        int orientation = orientString != null ? Integer.parseInt(orientString) : ExifInterface.ORIENTATION_NORMAL;

        int rotationAngle = 0;
        if (orientation == ExifInterface.ORIENTATION_ROTATE_90) rotationAngle = 90;
        if (orientation == ExifInterface.ORIENTATION_ROTATE_180) rotationAngle = 180;
        if (orientation == ExifInterface.ORIENTATION_ROTATE_270) rotationAngle = 270;

        Matrix matrix = new Matrix();
        matrix.setRotate(rotationAngle, (float) bm.getWidth() / 2, (float) bm.getHeight() / 2);
        rotatedBitmap = Bitmap.createBitmap(bm, 0, 0, bounds.outWidth, bounds.outHeight, matrix, true);
        finalrotatedBitmap = AddTextonBitmap.textAsBitmap(rotatedBitmap, bitmap_overdraw_str);
    }

    private File createImageFile() throws IOException {
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );
        // Save a file: path for use with ACTION_VIEW intents
        mCurrentPhotoPath = image.getAbsolutePath();
        return image;
    }
}

Adapter class package www.welkinfort.com.pphc;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.ArrayList;

/**
 * Created by Admin on 13-Jul-17.
 */

class MyAdapter extends RecyclerView.Adapter<MyAdapter.Myviewholder> {
    private static final String TAG = "Adapter";
    static Data_Model m;
    XenImageUploading xenImageUploading;
    ArrayList<Data_Model> arrayList;
    private Context mContext;

    public MyAdapter(XenImageUploading xenImageUploading, ArrayList<Data_Model> arrayList) {
        this.arrayList = arrayList;
        this.xenImageUploading = xenImageUploading;
    }

    @Override
    public Myviewholder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.abc, parent, false);
        Myviewholder myviewholder = new Myviewholder(view);
        Log.d("myactivty ", "oncreateViewHolder");

        return myviewholder;
    }

    @Override
    public void onBindViewHolder(final Myviewholder holder, final int position) {
        m = arrayList.get(position);
        Log.d(" myactivty", "onBindviewholder" + position);
        holder.imageView.setImageBitmap(m.getImage());

    }
    @Override
    public int getItemCount() {
        return arrayList == null ? 0 : arrayList.size();
    }

    public class Myviewholder extends RecyclerView.ViewHolder {
       // public  View view;
        public ImageView imageView;

        public Myviewholder(View itemView) {
            super(itemView);
            imageView = (ImageView) itemView.findViewById(R.id.image);

        }
    }
}

enter image description here

+4
source share
1 answer

try creating one such method in your adapter, for example

  public ArrayList<Data_Model> getArray() {
    return arrayList;
}

 upload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ArrayList<Data_Model> arrayList= adapter.getArray();
        }
    });

+1

Source: https://habr.com/ru/post/1681510/


All Articles