не получить все изображения из gridview на элементе click listener - PullRequest
0 голосов
/ 06 апреля 2011

я разрабатываю приложение, в котором gridview отображают изображения из Интернета ... теперь я хочу передать все изображения в галерею при событии click gridview ..

Я хочу, чтобы моя галерея не загружала все изображения, когдаактивность галереи называется .. так что я хочу передать все изображения из вида сетки в активность галереи ...

есть ли какое-либо решение для передачи всех изображений gridview о следующей активности,?

Изображения моего gridview получены из Интернета, и я не храню все изображения локально ... просто отображаю их в виде сетки.

вот мой код ..

mainfile.java

   public class PhotoList extends Activity
{
     Bundle bundle;
     String key;
     int totalPhoto;
     ImageView imageArray[];
     HashMap<String,ArrayList<ChildPhotos>> childPhotosWithId;
     ArrayList<ChildPhotos> childPhotoList;
     String allURL[];
     String title,discription;
     TextView PhotosTitle,PhotosDiscription;
     public static Bitmap[] downloadedChildPhotos;
     public static int downloadedChildPhotosIndex=0;
     ImageView img[];
     public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.photo_list);


            GridView gridview = (GridView) findViewById(R.id.gridview);
            bundle=getIntent().getExtras();
            key=bundle.getString("key");
            totalPhoto=Integer.parseInt(key);
            img=new ImageView[totalPhoto];
            title=bundle.getString("title");
            discription=bundle.getString("discription");

            childPhotosWithId=PhotosXMLHanler.getChildPhotoWithId();
            childPhotoList=childPhotosWithId.get(key);
            ChildPhotos c[]=new ChildPhotos[childPhotoList.size()];
            allURL=new String[childPhotoList.size()];

            downloadedChildPhotos=new Bitmap[childPhotoList.size()];

            PhotosTitle=(TextView)findViewById(R.id.photosTitleInGridView);
            PhotosDiscription=(TextView)findViewById(R.id.photoDiscriptionInGridView);

            PhotosTitle.setText(title);
            PhotosDiscription.setText(discription);

                for(int i=0;i<childPhotoList.size();i++)
                {
                    c[i]=new ChildPhotos();
                    c[i]=childPhotoList.get(i);
                    String url=c[i].getChildPhoto();
                    allURL[i]=url;
                    System.out.println("url "+(i+1)+c[i].getChildPhoto());
                }

                gridview.setAdapter(new ImageAdapter(this,allURL));

            gridview.setOnItemClickListener(new OnItemClickListener()
            {
                public void onItemClick(AdapterView<?> parent, View v, int position, long id)
                {
                Toast.makeText(PhotoList.this, "" +id, Toast.LENGTH_SHORT).show();
                GridView g=(GridView)v.findViewById(R.id.gridview);

                    for(int i=0;i<totalPhoto;i++)
                    {
                    img[i]=new ImageView(PhotoList.this);

                    System.out.println("image ==>"+img[i].getId());
                    }

                /*

                here i want to fetch all images from grid view...


                */


//              Intent intent=new Intent(PhotoList.this,GalleryView.class);
//              
//              startActivityForResult(intent, 0);

                }
            });




        }

     class ImageAdapter extends BaseAdapter 
     {
            private Context mContext;
            String[] allURL;
            ImageLoader imageLoader;

            public ImageAdapter(Context c,String[] allURL)
            {
                mContext = c;
                this.allURL=allURL;
                imageLoader =   new ImageLoader(mContext);
            }

            public int getCount()
            {
                return allURL.length;
            }

            public Object getItem(int position) 
            {
                return null;
            }


            public long getItemId(int position)
            {
                return 0;
            }

            // create a new ImageView for each item referenced by the Adapter
            public View getView(int position, View convertView, ViewGroup parent) {
                ImageView imageView;
                if (convertView == null)
                { 
                    // if it's not recycled, initialize some attributes
                    imageView = new ImageView(mContext);
                    imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
                    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                    imageView.setPadding(8, 8, 8, 8);
                } 
                else 
                {
                    imageView = (ImageView) convertView;
                }
                 imageView.setTag(allURL[position]);

                 imageLoader.DisplayImage(allURL[position],PhotoList.this,imageView);
                 ///here i use thread which set image in backgrund...as images come from internet..



                 return imageView;
            }

        }

}

1 Ответ

2 голосов
/ 06 апреля 2011

Как и когда вы нажимаете на одно изображение в gridview, вы можете сохранить это изображение в растровом изображении. Напишите следующий код в вашей закомментированной части.

ImageView im=(ImageView) view;  
Drawable d = im.getDrawable();  
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();

Аналогичным образом вы можете сохранить все растровые изображения, как при нажатии на изображение. Надеюсь, это то, что вы ищете.

...