Android 是否可以在刷卡时更改gridview图像的位置?
我尝试在gridview中从webservice加载图像,结果成功。 我使用惰性适配器从web服务加载所有图像Android 是否可以在刷卡时更改gridview图像的位置?,android,android-layout,android-gridview,Android,Android Layout,Android Gridview,我尝试在gridview中从webservice加载图像,结果成功。 我使用惰性适配器从web服务加载所有图像 如果我单击某个图像,它应该显示在下一个活动中,并且在滑动该图像时,应该显示下一个图像。有什么想法吗?我想,使用ViewPager可以相对容易地实现这一点。考虑以下流程:当用户选择一个列表项时,传递所有图像的列表,例如URI和指示选择的一个索引,其中包含一个包含VIEWPER的活动。然后,您可以使用传递的列表初始化ViewPager的适配器,并将当前项设置为显示在索引中 有关如何使用Vi
如果我单击某个图像,它应该显示在下一个活动中,并且在滑动该图像时,应该显示下一个图像。有什么想法吗?我想,使用ViewPager可以相对容易地实现这一点。考虑以下流程:当用户选择一个列表项时,传递所有图像的列表,例如URI和指示选择的一个索引,其中包含一个包含VIEWPER的活动。然后,您可以使用传递的列表初始化ViewPager的适配器,并将当前项设置为显示在索引中 有关如何使用ViewPager的更多提示,请查看API演示,或者阅读developers.android.com上的。不要将片段作为视图提供给ViewPager,只需实例化一个ImageView——您可能会发现一些关于如何实现这一点的指针很有用。此外,阅读PagerAdapter可能同样重要 //编辑:以上建议的编码要点: 让您的onItemClick创建新的意图,添加用于检索图像的相关数据以及所选索引,然后启动活动:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(this, ImageViewer.class);
intent.putExtra(PAGE_POSITION, position);
intent.putStringArrayListExtra(IMAGE_LIST, mImages)
// or add a serializable, e.g. an ArrayList<T> with your POJOs
intent.putExtra(IMAGE_LIST, mImages);
startActivity(intent);
}
请注意,我没有测试上面的代码,也不意味着它是完整的。例如,我假设您自己知道如何获取对LayoutInflater的引用,并且拥有一个“惰性”图像加载程序,该加载程序可以根据ImageView异步设置图像。image_pager_item_布局文件可以只是一个ImageView,也可以是视图组内更复杂的视图层次结构,如ListView和GridView,例如,您可以轻松地为图像添加标题。这与非常相似,我添加了一堆代码片段来说明前面建议的工作流程。希望有帮助!谢谢..你是说我用Viewpager来代替Gridview还是什么?不,你应该保留Gridview来显示一个类似“画廊”的UI,假设这是你想要的,如果我正确理解你的意思,并从头到尾阅读我的建议。因此,流程或多或少是这样的:GridView gallery-like界面->onItemClick->包含ViewPager的ImageViewer,它允许您从一个特定图像切换到另一个特定图像。将其与标准Gallery应用程序进行比较,标准Gallery应用程序最初也在网格中显示图像,但同时允许您在“放大”图像后滑动到上一个/下一个。您好,MH。。mImageLoader.loadImagemImageList.getposition,photoImageView;ViewPager pager.addViewview,0;这里是mImageloader函数的作用?。我使用字符串Arrray来存储ImageuRl,如何在arraylist中存储这些。请友好地指导我mImageloader只是一个对象,代表随机图像加载库,例如Google中的库,负责根据ImageView异步设置图像。实际上不需要将数组转换为列表,因为使用数组同样简单,但如果坚持使用数组,可以借助静态方法进行转换。
if (getIntent() != null && getIntent().getExtras() != null {
mImagePosition = getIntent().getExtras().getInt(PAGE_POSITION, 0);
mImageList = getIntent().getExtras().getStringArrayList(IMAGE_LIST);
// or if you used Serializables
mImageList = (ArrayList<T>) getIntent().getExtras().getSerializable(IMAGE_LIST);
mViewPager.setAdapter(new ImagePagerAdapter());
mViewPager.setCurrentItem(mImageIndex);
}
private class ImagePagerAdapter extends PagerAdapter {
public int getCount() {
return mImageList == null ? 0 : mImageList.size();
}
public Object instantiateItem(View pager, int position) {
if (mInflater == null) mInflater = (LayoutInflater) container.getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View view = mInflater.inflate(R.layout.image_pager_item_layout, null, false);
ImageView photoImageView = (ImageView) view.findViewById(R.id.photo_imageview);
mImageLoader().loadImage(mImageList.get(position), photoImageView);
((ViewPager) pager).addView(view, 0);
return view;
}
public void destroyItem(View pager, int position, Object object) {
((ViewPager) pager).removeView((View) object);
}
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
public void finishUpdate(View container) { }
public void restoreState(Parcelable state, ClassLoader loader) { }
public void startUpdate(View container) { }
public Parcelable saveState() { return null; }
}