package com.ijoomer.common.classes; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.Toast; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.IjoomerCheckBox; import com.ijoomer.src.R; /** * This Class Contains All Method Related To IjoomerPhotoGalaryActivity. * * @author tasol * */ public class IjoomerPhotoGalaryActivity extends Activity { private ImageAdapter imageAdapter; private String[] arrPath; private boolean[] thumbnailsselection; private int ids[]; private int count; /** * Overrides methods */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ijoomer_photo_gallery); final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID }; final String orderBy = MediaStore.Images.Media._ID; @SuppressWarnings("deprecation") Cursor imagecursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID); this.count = imagecursor.getCount(); this.arrPath = new String[this.count]; ids = new int[count]; this.thumbnailsselection = new boolean[this.count]; for (int i = 0; i < this.count; i++) { imagecursor.moveToPosition(i); ids[i] = imagecursor.getInt(image_column_index); int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); arrPath[i] = imagecursor.getString(dataColumnIndex); } GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid); imageAdapter = new ImageAdapter(); imagegrid.setAdapter(imageAdapter); imagecursor.close(); final IjoomerButton selectBtn = (IjoomerButton) findViewById(R.id.selectBtn); selectBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { final int len = thumbnailsselection.length; int cnt = 0; String selectImages = ""; for (int i = 0; i < len; i++) { if (thumbnailsselection[i]) { cnt++; selectImages = selectImages + arrPath[i] + "|"; } } if (cnt == 0) { Toast.makeText(getApplicationContext(), "Please select at least one image", Toast.LENGTH_LONG).show(); } else { Log.d("SelectedImages", selectImages); Intent i = new Intent(); i.putExtra("data", selectImages); setResult(Activity.RESULT_OK, i); finish(); } } }); } @Override public void onBackPressed() { setResult(Activity.RESULT_CANCELED); super.onBackPressed(); } /** * Class method */ /** * This method used to set bitmap. * @param iv represented ImageView * @param id represented id */ private void setBitmap(final ImageView iv, final int id) { new AsyncTask<Void, Void, Bitmap>() { @Override protected Bitmap doInBackground(Void... params) { return MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null); } @Override protected void onPostExecute(Bitmap result) { super.onPostExecute(result); iv.setImageBitmap(result); } }.execute(); } /** * List adapter * @author tasol */ public class ImageAdapter extends BaseAdapter { private LayoutInflater mInflater; public ImageAdapter() { mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public int getCount() { return count; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.ijoomer_photo_gallery_item, null); holder.imageview = (ImageView) convertView.findViewById(R.id.thumbImage); holder.IjoomerCheckBox = (IjoomerCheckBox) convertView.findViewById(R.id.itemCheckBox); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.IjoomerCheckBox.setId(position); holder.imageview.setId(position); holder.IjoomerCheckBox.setOnClickListener(new OnClickListener() { public void onClick(View v) { IjoomerCheckBox cb = (IjoomerCheckBox) v; int id = cb.getId(); if (thumbnailsselection[id]) { cb.setChecked(false); thumbnailsselection[id] = false; } else { cb.setChecked(true); thumbnailsselection[id] = true; } } }); holder.imageview.setOnClickListener(new OnClickListener() { public void onClick(View v) { int id = holder.IjoomerCheckBox.getId(); if (thumbnailsselection[id]) { holder.IjoomerCheckBox.setChecked(false); thumbnailsselection[id] = false; } else { holder.IjoomerCheckBox.setChecked(true); thumbnailsselection[id] = true; } } }); try { setBitmap(holder.imageview, ids[position]); } catch (Throwable e) { } holder.IjoomerCheckBox.setChecked(thumbnailsselection[position]); holder.id = position; return convertView; } } /** * Inner class * @author tasol */ class ViewHolder { ImageView imageview; IjoomerCheckBox IjoomerCheckBox; int id; } }