2017-07-15 31 views
4

我想要做的是從圖庫和相機中獲取圖像並將其放置在recyclerview中。 現在的主要部分來的圖像現在放在recyclerview, ,但任何人都可以告訴我,只有當我點擊我的上傳按鈕時,我怎麼才能回到recyclerview中顯示的這些圖像回mainActivity。如何在主要活動中獲取recyclerview圖像數據

預先感謝您。

我的主要活動。

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; 
    } 
} 

適配器類 包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

回答

1

試試這個創建一個方法在適配器這樣

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

現在您按一下按鈕只需要調用這個方法

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

問我任何查詢的情況下

+0

感謝您的解決方案,但我婉讓所有在知情同意提到的上傳按鈕點擊屁股圖像看看.. @Nilesh Rathod –

+0

比創建一個公共的方法適配器類和返回arraylist在這個方法,當你點擊上傳按鈕,而不是調用這個方法,你可以得到所有的圖像@VineyDhiman問我在任何查詢的情況下 –

+0

非常感謝你的工作正常,現在我應該直接使用這個數組列表翻新或我必須把它放入位圖數組.. ..? –

相關問題