0

I have a list of images from picasa. I put it in grid view and then on click have the fullscreen image that is done by viewpager. I tried many ways to get bitmap or get imageview from view pager adapter but it is giving null. Please help me, I'm new, this is my first app and I'm confused. This is my code :

package com.example.soha.livingroom;
    public class fullimafepager   extends Activity implements OnClickListener {

  //  TouchImageView imgflag;
   // BitmapDrawable btmpDr;
    private static final String STATE_POSITION = "STATE_POSITION";
  //  @InjectView(R.id.pager)
LruBitmapCache lreucach;

    private PrefManager prefmanger;
    private List<String> images = new ArrayList<String>();
    private String imageuri;

    // Picasa JSON response node keys

    // Declare Variables
    private  ViewPager viewPager;
    private ImageAdapter adapter;
private int npostion;
  //  private Bitmap[] image2;

    private int position;

    // private im selectedPhoto;
    private LinearLayout llSetWallpaper, llDownloadWallpaper;
    private Utils utils;
    private ProgressBar pbLoader;
    private View view;

private Bitmap bitmap;
    private ImageView fullImageView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from viewpager_main.xml
        prefmanger = new PrefManager(getApplicationContext());
        setContentView(R.layout.viewpager_main);
        if (getIntent().getExtras() != null) {
            this.images = getIntent().getExtras().getStringArrayList("list");
            position = getIntent().getIntExtra("postion", 0);
            ;
            // fullImageView= images.get(position);
            Log.d("=======", "Data " + images.get(1));

            Toast.makeText(this, "the" + images.get(1) + position, Toast.LENGTH_LONG).show();
            //   Intent i = getIntent();
            // image selectedPhoto = (image) getIntent().getSerializableExtra(TAG_SEL_IMAGE);
            //   System.out.println(images);

        }

        prefmanger = new PrefManager(getApplicationContext());


        // Generate sample data

        // flag = new int[] { R.drawable.ico_loader, R.drawable.ico_loader, R.drawable.ico_loader, R.drawable.ico_loader};

        // Locate the ViewPager in viewpager_main.xml
        viewPager = (ViewPager) findViewById(R.id.pager);
        // Pass results to ViewPagerAdapter Class
        adapter = new ImageAdapter(fullimafepager.this, images);
        // Binds the Adapter to the ViewPager
        viewPager.setAdapter(adapter);
        // viewPager.setCurrentItem(0);

        viewPager.setCurrentItem(position);
        Log.d("test", "Current Page:"+viewPager.getCurrentItem());
      //  fullImageView= (ImageView) viewPager.getChildAt(position);
        npostion= viewPager.getCurrentItem();
 // fullImageView= (TouchImageView) viewPager.findViewById(R.id.imgFullscreen);
       fullImageView= (TouchImageView) viewPager.findViewWithTag("pos" + viewPager.getCurrentItem());
        Log.d("test", "Current uri:" + fullImageView);
      //  Log.d("test", "Current Page:"+npostion);
    //    view     = fullimafepager.viewPager.getChildAt(fullimafepager.viewPager.getCurrentItem()).getRootView();
      //   fullImageView = (ImageView)fullimafepager.viewPager.findViewWithTag("myview" + fullimafepager.viewPager.getCurrentItem());

      //  Log.d("=======", "Data " + fullImageView);
        //addition
     //   imageUri = images.get(npostion);

       //  uri = Uri.parse(imageUri);
      //  imageuri=images.get(npostion);
       // bitmap=lreucach.getBitmap(imageuri);
        llSetWallpaper = (LinearLayout) findViewById(R.id.llSetWallpaper);
        llDownloadWallpaper = (LinearLayout) findViewById(R.id.llDownloadWallpaper);
        pbLoader = (ProgressBar) findViewById(R.id.pbLoader);
        // hide the action bar in fullscreen mode
        //  fullImageView = (ImageView) findViewById(R.id.imgFullscreen);
    //    getActionBar().hide();

    //    utils = new Utils(getApplicationContext());

        // layout click listeners
      llSetWallpaper.setOnClickListener(this);
        llDownloadWallpaper.setOnClickListener(this);


        // setting layout buttons alpha/opacity
        llSetWallpaper.getBackground().setAlpha(70);
        llDownloadWallpaper.getBackground().setAlpha(70);
    }


        @Override
        public void onClick(View v) {
            Bitmap bitmap = ((BitmapDrawable) fullImageView.getDrawable())
                    .getBitmap();
         //  Bitmap bitmap = ((BitmapDrawable) imgflag.getBitmap();
         /*   Bitmap bitmap1= null;
            try {
                bitmap1 = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(imageuri));
            } catch (IOException e) {
                e.printStackTrace();
            }*/

            Log.d("test", "Current uri:" + bitmap);
            switch (v.getId()) {

                case R.id.llDownloadWallpaper:
                 //  utils.saveImageToSDCard(bitmap);
                {   File myDir = new File(
                            Environment
                                    .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                            prefmanger.getGalleryName());

                    myDir.mkdirs();
                    Random generator = new Random();
                    int n = 10000;
                    n = generator.nextInt(n);
                    String fname = "Wallpaper-" + n + ".jpg";
                    File file = new File(myDir, fname);
                    if (file.exists())
                        file.delete();
                    try {
                        FileOutputStream out = new FileOutputStream(file);
                        bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
                        out.flush();
                        out.close();
                        Toast.makeText(
                                fullimafepager.this,
                                fullimafepager.this.getString(R.string.toast_saved).replace("#",
                                        "\"" + prefmanger.getGalleryName() + "\""),
                                Toast.LENGTH_SHORT).show();
                   //     Log.d(this, "Wallpaper saved to: " + file.getAbsolutePath());

                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(fullimafepager.this,
                                fullimafepager.this.getString(R.string.toast_saved_failed),
                                Toast.LENGTH_SHORT).show();}}
                    break;
                // button Set As Wallpaper tapped
                case R.id.llSetWallpaper:
                    //  utils.shareIt(bitmap);
                {  /*Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("image/*");
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
                try {
                    f.createNewFile();
                    FileOutputStream fo = new FileOutputStream(f);
                    fo.write(bytes.toByteArray());
                } catch (IOException e) {
                    e.printStackTrace();
                }
               // share.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/temporary_file.jpg"));
                startActivity(Intent.createChooser(share, "Share Image"));*/
                  Intent share = new Intent(Intent.ACTION_SEND);
                    share.setType("image/jpeg");

                    ContentValues values = new ContentValues();
                    values.put(MediaStore.Images.Media.TITLE, "title");
                    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
                 Uri  uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            values);


                    OutputStream outstream;
                    try {
                        outstream = getContentResolver().openOutputStream(uri);
                        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outstream);
                        outstream.close();
                    } catch (Exception e) {
                        System.err.println(e.toString());
                    }

                    share.putExtra(Intent.EXTRA_STREAM, uri);
                    startActivity(Intent.createChooser(share, "Share Image"));
                }
                break;
                default:
                    break;
            }

        }



/**
 * @author Terry E-mail: yaoxinghuo at 126 dot com
 * @version create: 2010-10-21 ??01:40:03
 */

   }

and this is my adapter

public class ImageAdapter extends  PagerAdapter {
    private  Activity _activity;
    // Declare Variables
    Context context;
    Utils utiles;
    TouchImageView imgflag;
    LruBitmapCache lreucach;
  private List<String> image2;
  private   LayoutInflater inflater;
private  Bitmap bitmap;
    //new
    private image selectedPhoto;

    public ImageAdapter(Activity activity,
                        List<String> flag) {

        this._activity = activity;

        this.image2 = flag;
    }

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

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((TouchImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int postion) {

        // Declare Variables



        inflater = (LayoutInflater) _activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View itemView = inflater.inflate(R.layout.activity_fullscreen_image, container,
                false);
        imgflag = (TouchImageView)  itemView.findViewById(R.id.imgFullscreen);

    //    fullImageView.setOnTouchListener(this);



        // Capture position and set to the ImageView
     Picasso.with(_activity).load(image2.get(postion)).into(imgflag);

        imgflag.setTag("pos" + postion);
       // imgflag.setImageURI(Uri.parse("http:/i.dailymail.co.uk/i/pix/2014/0‌​9/27/1411832985119_Puff_Image_galleryImage_SUNDERLAND_ENGLAND_SEPTEM.JPG"));
     /*   Uri imgUri = Uri.parse(image2.get(postion));
       imgflag.setImageURI(null);
       imgflag.setImageURI(imgUri);
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap bitmap = BitmapFactory.decodeFile(image2.get(postion), options);
            imgflag.setImageBitmap(bitmap);*/

    //     bitmap = ((BitmapDrawable) imgflag.getDrawable()).getBitmap();;
     //   Bitmap bitmap;
       // OutputStream output;

       //  utiles.setBitmap();
        // Add viewpager_item.xml to ViewPager
                ((ViewPager) container).addView(imgflag);

      //   lreucach.putBitmap(image2.get(postion),bitmap);
        Log.d("test", "Adapter creating item:" + postion);
        return imgflag;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // Remove viewpager_item.xml from ViewPager

        ((ViewPager) container).removeView((TouchImageView) object);
    }

    @Override
    public void restoreState(Parcelable state, ClassLoader loader) {
    }

    @Override
    public Parcelable saveState() {
        return null;
    }
    public Bitmap getBtmap(){
        BitmapDrawable btmpDr = (BitmapDrawable) imgflag.getDrawable();
        bitmap = btmpDr.getBitmap();
        return bitmap;
    }
Jakob Runge
  • 2,287
  • 7
  • 36
  • 47
  • Welcome to SO! Please, take some time and read about how to create a good code example here: http://stackoverflow.com/help/mcve – Dethariel Oct 07 '15 at 16:56
  • if you want to save image as bitmap or you want to share the image then you should have direct link of image. i mean .jpg or .png link. if you'll elaborate more then i'll help :) – Tashen Jazbi Apr 05 '16 at 07:52

0 Answers0