从通过从parse.com叫所有图像网格视图和刷卡加载图像 [英] Load image from grid view and swipe through all images called from parse.com
问题描述
所以我成功加载在我的网格视图图片来自parse.com,但我有麻烦的形象传递给我的ImageDetail类,也是我试图加载图像中的ViewPager这样我可以通过刷卡根据发送的图像的位置在画廊图像。
下面是一些code参考,我会很感激的任何帮助或建议,以帮助我更接近我所想要的目的。
下面是我的适配器,用于我的画廊:
公共类GalleryAdapter延伸BaseAdapter { 上下文语境;
LayoutInflater膨胀;
LoadImages loadImages;
公共静态列表< MyImages> galleryImages;
私人的ArrayList< MyImages> imageUrls;
公共GalleryAdapter(上下文的背景下,列表与LT; MyImages> galleryImages){
this.context =背景;
this.galleryImages = galleryImages;
膨胀= LayoutInflater.from(背景);
this.imageUrls =新的ArrayList< MyImages>();
this.imageUrls.addAll(galleryImages); loadImages =新LoadImages(背景); } 公共类ViewHolder {
ImageView的图片;
} @覆盖
公众诠释的getCount(){
返回galleryImages.size();
} @覆盖
公共对象的getItem(INT位置){
返回galleryImages.get(位置);
} @覆盖
众长getItemId(INT位置){
返回的位置;
}
@覆盖
公共查看getView(最终诠释的立场,观点来看,一个ViewGroup父){
// TODO自动生成方法存根
最后ViewHolder持有人;
如果(查看== NULL){
持有人=新ViewHolder();
鉴于= inflate.inflate(R.layout.gallery_image,NULL);
//找到gallery_image图像
holder.picture =(ImageView的)view.findViewById(R.id.picture);
view.setTag(保持器);
}其他{
支架=(ViewHolder)view.getTag();
} //加载到myGallery的GridView
loadImages.DisplayImages(galleryImages.get(位置).getImages(),holder.picture);
GalleriesFragment.myGallery.setOnItemClickListener(新OnItemClickListener(){ @覆盖
公共无效onItemClick(适配器视图<>母公司,观景,
INT位置,长的id){
图像以ImageDetail观点// TODO通位置 意图viewPic =新意图(背景下,ImageDetail.class); //传数据
viewPic.putExtra(峰,galleryImages.get(位置).getImages()); 束束=新包();
bundle.putInt(位置,位置); //viewPic.putExtra(\"position,galleryImages.get(位置)); //ImageDetail.pager.setCurrentItem(galleryImages.get(position)); context.startActivity(viewPic);
}
}); 返回视图。
}
}
和这里就是我试图从画廊拍了拍图片打电话,然后就可以根据图像中选择的位置通过previous /下一张图片刷卡ImageDetail类:
公共类ImageDetail延伸活动{ 私人ViewPager寻呼机;
公共静态字符串图片;
LoadImages负荷=新LoadImages(本);
ImageView的selectedImage;
ImageView的exitToGallery;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_image_detail); //从GalleriesFragment获得意图 - 获得所选图像
意向方法GetPic = getIntent();
//获取图像
// PIC = getPic.getExtras()的getString(PIC);
PIC = getPic.getStringExtra(PIC); 捆绑的getBundle = getPic.getExtras();
位置= getBundle.getInt(位置); //位置= getPic.getExtra(位置); 寻呼机=(ViewPager)findViewById(R.id.pager);
SwipeImageAdapter swipeAdapter =新SwipeImageAdapter();
pager.setAdapter(swipeAdapter);
pager.setCurrentItem(位置); Toast.makeText(MainActivity.context,
只要按返回键,返回到画廊。
Toast.LENGTH_LONG).show(); } //用于封闭视图
@覆盖
公共无效完成(){ super.finish();
} //类使用ViewPager扫取图像功能
私有类SwipeImageAdapter扩展PagerAdapter { 公众诠释的getCount(){ // TODO自动生成方法存根
返回GalleryAdapter.imageUrls.size(); } / *
* //似乎无法获得图像的正确位置抽头公共字符串
*的getItem(INT位置){// TODO自动生成方法存根
*
* //返回GalleryAdapter.getImageurls()获得(位置);返回
* GalleriesFragment.galleryImages.get(位置)的ToString();
*
*}
*
*众长getItemId(INT位置){// TODO自动生成方法
*存根
*
*返回位置;
*
*}
* / @覆盖
公共布尔isViewFromObject(查看视图,obj对象){
// TODO自动生成方法存根
返回查看==((ImageView的)目标文件);
} @覆盖
公共对象instantiateItem(ViewGroup中的容器,INT位置){
上下文的背景下= ImageDetail.this; selectedImage =新ImageView的(上下文);
exitToGallery =新ImageView的(上下文);
exitToGallery.setImageResource(R.drawable.close); LinearLayout.LayoutParams布局=新LinearLayout.LayoutParams(
300,500);
selectedImage.setLayoutParams(布局);
// pager.getCurrentItem(); // loading.DisplayImages(GalleryAdapter.imageUrls.indexOf(位置),
// selectedImage); loading.DisplayImages(PIC,selectedImage);
// selectedImage.setImageResource(GalleryAdapter.imageUrls.indexOf(的getBundle));
//使用下面绵延的图像,但否则出现微小的图像细节页=(上
selectedImage.setScaleType(ImageView.ScaleType.FIT_XY); // selectedImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE); exitToGallery.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(视图v){
// TODO返回画廊
完(); } }); ((ViewPager)容器).addView(selectedImage,0);
((ViewPager)容器).addView(exitToGallery,0); 返回selectedImage;
} @覆盖
公共无效destroyItem(ViewGroup中的容器,INT位置,obj对象){
((ViewPager)容器).removeView((ImageView的)目标文件);
} }
}
- 我也尝试了从装载的意图传递到对ImageDetail活动图像视图的形象,但我不能让图像显示
我有更多的类/ code为扎入从parse.com叫我的图片参考,但我认为我所共享的,现在可够上下文。
编辑,包括加载我的形象类
公共类LoadImages { CacheMemory cacheMem =新CacheMemory();
求CacheFile求CacheFile;
私人地图< ImageView的,字符串> myPictures = Collections.synchronizedMap(新的WeakHashMap< ImageView的,字符串>()); ExecutorService的executeService;
//这将显示图像,UI
处理器handleImages =新的处理程序(); 公共LoadImages(上下文的背景下){
求CacheFile =新求CacheFile(背景);
executeService = Executors.newFixedThreadPool(5);
} 最终诠释占位= R.drawable.famous; 公共无效DisplayImages(字符串URL,ImageView的PIC){
myPictures.put(PIC,URL);
位图位图= cacheMem.get(URL);
如果(位图!= NULL){
pic.setImageBitmap(位图);
}其他{
queuePic(URL,PIC);
pic.setImageResource(占位符);
}
} 私人无效queuePic(字符串URL,ImageView的PIC){
PicToLoad loadPic =新PicToLoad(URL,PIC);
executeService.submit(新PicLoader(loadPic));
} 私人位图getBitmap(字符串URL){
文件file = cacheFile.getFile(URL);
位图newBitmap =去code(文件);
如果(newBitmap!= NULL){
返回newBitmap;
} //来自parse.com下载我的画廊图片
尝试{
位图位图= NULL;
URL = imgUrl的新的URL(网址);
HttpURLConnection的连接=(HttpURLConnection类)imgUrl.openConnection();
connect.setConnectTimeout(20000);
connect.setReadTimeout(20000);
connect.setInstanceFollowRedirects(真); 输入的InputStream = connect.getInputStream();
OutputStream的输出=新的FileOutputStream(文件);
Utilities.copy(输入,输出);
output.close();
connect.disconnect();
位=去code(文件);
返回位图;
}赶上(Throwable异常){
exception.printStackTrace();
如果(例外的instanceof的OutOfMemoryError)
cacheMem.clear();
返回null;
}
} //德code的形象,规模,减少内存使用
私人位图德code(档案文件){
尝试{
BitmapFactory.Options选项=新BitmapFactory.Options();
options.inJustDe codeBounds = TRUE;
的FileInputStream流=新的FileInputStream(文件);
BitmapFactory.de codeStream(流空,期权);
stream.close(); 最终诠释desiredImgSize = 150;
INT宽度= options.outWidth,身高= options.outHeight;
int标= 1;
而(真){
如果(宽度/ 2'; desiredImgSize ||高度/ 2版; desiredImgSize)
打破;
宽度/ = 2;
高度/ = 2;
规模* = 2; } BitmapFactory.Options选项2 =新BitmapFactory.Options();
options2.inSampleSize =规模;
流2的FileInputStream =新的FileInputStream(文件);
位图位图= BitmapFactory.de codeStream(流2,空,选项2);
stream2.close();
返回位图;
}赶上(FileNotFoundException异常五){ }赶上(IOException异常五){
e.printStackTrace();
} 返回null;
} //队列
私有类PicToLoad {
公共字符串的URL;
公共ImageView的图片; 公共PicToLoad(字符串URL2,ImageView的PIC2){
URL = URL2;
PIC = PIC2;
}
} 类PicLoader实现Runnable {
PicToLoad picToLoad; PicLoader(PicToLoad picToLoad){
this.picToLoad = picToLoad;
} @覆盖
公共无效的run(){
// TODO自动生成方法存根
尝试{
如果(recycleImageView(picToLoad))
返回;
位图位= getBitmap(picToLoad.url);
cacheMem.put(picToLoad.url,位);
如果(recycleImageView(picToLoad))
返回;
DisplayBitmap显示=新DisplayBitmap(位picToLoad);
handleImages.post(显示);
}赶上(Throwable的E){
e.printStackTrace();
}
} } 布尔recycleImageView(PicToLoad picToLoad){
字符串标记= myPictures.get(picToLoad.pic);
如果(标记== NULL ||!tag.equals(picToLoad.url))
返回true;
返回false;
} //在UI显示位图
类DisplayBitmap实现Runnable {
位图位图;
PicToLoad picToLoad; 公共DisplayBitmap(位图BM,PicToLoad PL){
位= BM;
picToLoad = PL;
} @覆盖
公共无效的run(){
// TODO自动生成方法存根
如果(recycleImageView(picToLoad))
返回;
如果(位图!= NULL){
picToLoad.pic.setImageBitmap(位图);
}其他{
picToLoad.pic.setImageResource(占位符);
} }
} 公共无效clearCache(){
cacheMem.clear();
cacheFile.clear();
}}
因此,对于谁可能遇到同样的问题,因为我的人,我得到了它的工作!
当我通过图片:
GalleriesFragment.myGallery.setOnItemClickListener(新OnItemClickListener(){ @覆盖
公共无效onItemClick(适配器视图<>母公司,观景,
INT位置,长的id){
图像以ImageDetail观点// TODO通位置 意图viewPic =新意图(背景下,ImageDetail.class); //传数据
viewPic.putExtra(峰,galleryImages.get(位置).getImages());
//传位置
viewPic.putExtra(ID,位置); context.startActivity(viewPic);
}
});
和如何接受它:
公共类ImageDetail延伸活动{
//从私人变更为公共静态
公共静态ViewPager寻呼机;
公共静态字符串图片;
公共静态INT位置;
LoadImages负荷=新LoadImages(本);
ImageView的selectedImage;
ImageView的exitToGallery; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_image_detail); //从GalleriesFragment获得意图 - 获得所选图像
意向方法GetPic = getIntent();
//获取图像
PIC = getPic.getStringExtra(PIC);
//获得寻呼机位置打开图像挖掘和展示
。位置= getPic.getExtras()调用getInt(ID); Log.d(位置=+位置+); 寻呼机=(ViewPager)findViewById(R.id.pager);
SwipeImageAdapter swipeAdapter =新SwipeImageAdapter();
pager.setAdapter(swipeAdapter);
pager.setCurrentItem(位置);
Toast.makeText(MainActivity.context,
只要按返回键,返回到画廊。
Toast.LENGTH_LONG).show(); } //用于封闭视图
@覆盖
公共无效完成(){ super.finish();
} //类使用ViewPager扫取图像功能
私有类SwipeImageAdapter扩展PagerAdapter { 公众诠释的getCount(){ // TODO自动生成方法存根
返回GalleryAdapter.imageUrls.size(); } 对象的getItem(INT位置){ 返回的位置;
}
@覆盖
公共布尔isViewFromObject(查看视图,obj对象){
// TODO自动生成方法存根
返回查看==((ImageView的)目标文件);
} @覆盖
公共对象instantiateItem(ViewGroup中的容器,INT位置){
上下文的背景下= ImageDetail.this; selectedImage =新ImageView的(上下文);
exitToGallery =新ImageView的(上下文);
exitToGallery.setImageResource(R.drawable.close); LinearLayout.LayoutParams布局=新LinearLayout.LayoutParams(
300,500);
selectedImage.setLayoutParams(布局); 字符串IMG = GalleryAdapter.galleryImages.get(位置).getImages(); loading.DisplayImages(IMG,selectedImage); selectedImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE); exitToGallery.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(视图v){
// TODO返回画廊
完(); } }); ((ViewPager)容器).addView(selectedImage,0);
((ViewPager)容器).addView(exitToGallery,0); 返回selectedImage;
} @覆盖
公共无效destroyItem(ViewGroup中的容器,INT位置,obj对象){
((ViewPager)容器).removeView((ImageView的)目标文件);
} }
}
So I am successfully loading images in my grid view from parse.com, but I am having trouble passing the image to my ImageDetail class, and also I'm trying to load the image in a ViewPager so that I can swipe through the images in the gallery based on the position of the image sent..
Here's some code for reference, I would be so grateful as to any help or suggestions to help me get closer to what I am trying to achieve.
Here's my adapter for my Gallery:
public class GalleryAdapter extends BaseAdapter {
Context context;
LayoutInflater inflate;
LoadImages loadImages;
public static List<MyImages> galleryImages;
private ArrayList<MyImages> imageUrls;
public GalleryAdapter(Context context, List<MyImages> galleryImages){
this.context = context;
this.galleryImages = galleryImages;
inflate = LayoutInflater.from(context);
this.imageUrls = new ArrayList<MyImages>();
this.imageUrls.addAll(galleryImages);
loadImages = new LoadImages(context);
}
public class ViewHolder {
ImageView picture;
}
@Override
public int getCount() {
return galleryImages.size();
}
@Override
public Object getItem(int position) {
return galleryImages.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder holder;
if (view == null){
holder = new ViewHolder();
view = inflate.inflate(R.layout.gallery_image, null);
// find image in gallery_image
holder.picture = (ImageView) view.findViewById(R.id.picture);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// load into myGallery gridview
loadImages.DisplayImages(galleryImages.get(position).getImages(), holder.picture);
GalleriesFragment.myGallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO pass position of image to ImageDetail view
Intent viewPic = new Intent(context, ImageDetail.class);
// pass data
viewPic.putExtra("pic", galleryImages.get(position).getImages());
Bundle bundle = new Bundle();
bundle.putInt("position", position);
//viewPic.putExtra("position", galleryImages.get(position));
//ImageDetail.pager.setCurrentItem(galleryImages.get(position));
context.startActivity(viewPic);
}
});
return view;
}
}
And here is the ImageDetail class where I am attempting to call in the picture tapped from the gallery and then be able to swipe through previous/next images according to the position of the image selected:
public class ImageDetail extends Activity {
private ViewPager pager;
public static String pic;
LoadImages loading = new LoadImages(this);
ImageView selectedImage;
ImageView exitToGallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_detail);
// get intent from GalleriesFragment - get selected image
Intent getPic = getIntent();
// get image
// pic = getPic.getExtras().getString("pic");
pic = getPic.getStringExtra("pic");
Bundle getBundle = getPic.getExtras();
position = getBundle.getInt("position");
// position = getPic.getExtra("position");
pager = (ViewPager) findViewById(R.id.pager);
SwipeImageAdapter swipeAdapter = new SwipeImageAdapter();
pager.setAdapter(swipeAdapter);
pager.setCurrentItem(position);
Toast.makeText(MainActivity.context,
"Simply hit the back key to return to Galleries.",
Toast.LENGTH_LONG).show();
}
// for closing the view
@Override
public void finish() {
super.finish();
}
// Class for Swipe Image Functionality using ViewPager
private class SwipeImageAdapter extends PagerAdapter {
public int getCount() {
// TODO Auto-generated method stub
return GalleryAdapter.imageUrls.size();
}
/*
* // can't seem to get correct position of image tapped public String
* getItem(int position) { // TODO Auto-generated method stub
*
* //return GalleryAdapter.getImageurls().get(position); return
* GalleriesFragment.galleryImages.get(position).toString();
*
* }
*
* public long getItemId(int position) { // TODO Auto-generated method
* stub
*
* return position;
*
* }
*/
@Override
public boolean isViewFromObject(View view, Object obj) {
// TODO Auto-generated method stub
return view == ((ImageView) obj);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = ImageDetail.this;
selectedImage = new ImageView(context);
exitToGallery = new ImageView(context);
exitToGallery.setImageResource(R.drawable.close);
LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(
300, 500);
selectedImage.setLayoutParams(layout);
// pager.getCurrentItem();
// loading.DisplayImages(GalleryAdapter.imageUrls.indexOf(position),
// selectedImage);
loading.DisplayImages(pic, selectedImage);
// selectedImage.setImageResource(GalleryAdapter.imageUrls.indexOf(getBundle));
// using below stretches images, but otherwise they show up tiny on the image detail page =(
selectedImage.setScaleType(ImageView.ScaleType.FIT_XY);
// selectedImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
exitToGallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO return to Galleries
finish();
}
});
((ViewPager) container).addView(selectedImage, 0);
((ViewPager) container).addView(exitToGallery, 0);
return selectedImage;
}
@Override
public void destroyItem(ViewGroup container, int position, Object obj) {
((ViewPager) container).removeView((ImageView) obj);
}
}
}
-- I've also tried just loading the image passed from the intent into an image view on the ImageDetail activity, but I can't get the image to display.
I have more classes/code for reference that tie into calling my images from parse.com, but I think what I've shared may be enough for context right now.
Edited to include a class that loads my image
public class LoadImages {
CacheMemory cacheMem = new CacheMemory();
CacheFile cacheFile;
private Map<ImageView, String> myPictures = Collections.synchronizedMap(new WeakHashMap<ImageView, String>());
ExecutorService executeService;
// this will display images to UI
Handler handleImages = new Handler();
public LoadImages(Context context){
cacheFile = new CacheFile(context);
executeService = Executors.newFixedThreadPool(5);
}
final int placeholder = R.drawable.famous;
public void DisplayImages(String url, ImageView pic){
myPictures.put(pic, url);
Bitmap bitmap = cacheMem.get(url);
if (bitmap != null){
pic.setImageBitmap(bitmap);
} else {
queuePic(url, pic);
pic.setImageResource(placeholder);
}
}
private void queuePic(String url, ImageView pic){
PicToLoad loadPic = new PicToLoad(url, pic);
executeService.submit(new PicLoader(loadPic));
}
private Bitmap getBitmap(String url){
File file = cacheFile.getFile(url);
Bitmap newBitmap = decode(file);
if (newBitmap != null){
return newBitmap;
}
// download my gallery images from parse.com
try {
Bitmap bitmap = null;
URL imgUrl = new URL(url);
HttpURLConnection connect = (HttpURLConnection) imgUrl.openConnection();
connect.setConnectTimeout(20000);
connect.setReadTimeout(20000);
connect.setInstanceFollowRedirects(true);
InputStream input = connect.getInputStream();
OutputStream output = new FileOutputStream(file);
Utilities.copy(input, output);
output.close();
connect.disconnect();
bitmap = decode(file);
return bitmap;
} catch (Throwable exception){
exception.printStackTrace();
if (exception instanceof OutOfMemoryError)
cacheMem.clear();
return null;
}
}
// decode image, scale to reduce memory usage
private Bitmap decode(File file) {
try{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
FileInputStream stream = new FileInputStream(file);
BitmapFactory.decodeStream(stream, null, options);
stream.close();
final int desiredImgSize = 150;
int width = options.outWidth, height = options.outHeight;
int scale = 1;
while (true){
if (width / 2 < desiredImgSize || height / 2 < desiredImgSize)
break;
width /= 2;
height /= 2;
scale *= 2;
}
BitmapFactory.Options options2 = new BitmapFactory.Options();
options2.inSampleSize = scale;
FileInputStream stream2 = new FileInputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(stream2, null, options2);
stream2.close();
return bitmap;
} catch (FileNotFoundException e){
} catch (IOException e){
e.printStackTrace();
}
return null;
}
// for queue
private class PicToLoad {
public String url;
public ImageView pic;
public PicToLoad(String url2, ImageView pic2){
url = url2;
pic = pic2;
}
}
class PicLoader implements Runnable {
PicToLoad picToLoad;
PicLoader(PicToLoad picToLoad) {
this.picToLoad = picToLoad;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
if (recycleImageView(picToLoad))
return;
Bitmap bit = getBitmap(picToLoad.url);
cacheMem.put(picToLoad.url, bit);
if (recycleImageView(picToLoad))
return;
DisplayBitmap display = new DisplayBitmap(bit, picToLoad);
handleImages.post(display);
} catch (Throwable e){
e.printStackTrace();
}
}
}
boolean recycleImageView(PicToLoad picToLoad) {
String tag = myPictures.get(picToLoad.pic);
if (tag == null || !tag.equals(picToLoad.url))
return true;
return false;
}
// display Bitmap on UI
class DisplayBitmap implements Runnable {
Bitmap bitmap;
PicToLoad picToLoad;
public DisplayBitmap(Bitmap bm, PicToLoad pl){
bitmap = bm;
picToLoad = pl;
}
@Override
public void run() {
// TODO Auto-generated method stub
if (recycleImageView(picToLoad))
return;
if (bitmap != null){
picToLoad.pic.setImageBitmap(bitmap);
} else {
picToLoad.pic.setImageResource(placeholder);
}
}
}
public void clearCache(){
cacheMem.clear();
cacheFile.clear();
}
}
So for anyone who might run into the same issue as me, I got it working!
When I pass the image:
GalleriesFragment.myGallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO pass position of image to ImageDetail view
Intent viewPic = new Intent(context, ImageDetail.class);
// pass data
viewPic.putExtra("pic", galleryImages.get(position).getImages());
// pass position
viewPic.putExtra("id", position);
context.startActivity(viewPic);
}
});
And how to receive it:
public class ImageDetail extends Activity {
// changed from private to public static
public static ViewPager pager;
public static String pic;
public static int position;
LoadImages loading = new LoadImages(this);
ImageView selectedImage;
ImageView exitToGallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_detail);
// get intent from GalleriesFragment - get selected image
Intent getPic = getIntent();
// get image
pic = getPic.getStringExtra("pic");
// get position to open image tapped and display in the pager
position = getPic.getExtras().getInt("id");
Log.d("position = ", +position+"");
pager = (ViewPager) findViewById(R.id.pager);
SwipeImageAdapter swipeAdapter = new SwipeImageAdapter();
pager.setAdapter(swipeAdapter);
pager.setCurrentItem(position);
Toast.makeText(MainActivity.context,
"Simply hit the back key to return to Galleries.",
Toast.LENGTH_LONG).show();
}
// for closing the view
@Override
public void finish() {
super.finish();
}
// Class for Swipe Image Functionality using ViewPager
private class SwipeImageAdapter extends PagerAdapter {
public int getCount() {
// TODO Auto-generated method stub
return GalleryAdapter.imageUrls.size();
}
Object getItem(int position){
return position;
}
@Override
public boolean isViewFromObject(View view, Object obj) {
// TODO Auto-generated method stub
return view == ((ImageView) obj);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = ImageDetail.this;
selectedImage = new ImageView(context);
exitToGallery = new ImageView(context);
exitToGallery.setImageResource(R.drawable.close);
LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(
300, 500);
selectedImage.setLayoutParams(layout);
String img = GalleryAdapter.galleryImages.get(position).getImages();
loading.DisplayImages(img, selectedImage);
selectedImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
exitToGallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO return to Galleries
finish();
}
});
((ViewPager) container).addView(selectedImage, 0);
((ViewPager) container).addView(exitToGallery, 0);
return selectedImage;
}
@Override
public void destroyItem(ViewGroup container, int position, Object obj) {
((ViewPager) container).removeView((ImageView) obj);
}
}
}
这篇关于从通过从parse.com叫所有图像网格视图和刷卡加载图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!