Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以在刷卡时更改gridview图像的位置?_Android_Android Layout_Android Gridview - Fatal编程技术网

Android 是否可以在刷卡时更改gridview图像的位置?

Android 是否可以在刷卡时更改gridview图像的位置?,android,android-layout,android-gridview,Android,Android Layout,Android Gridview,我尝试在gridview中从webservice加载图像,结果成功。 我使用惰性适配器从web服务加载所有图像 如果我单击某个图像,它应该显示在下一个活动中,并且在滑动该图像时,应该显示下一个图像。有什么想法吗?我想,使用ViewPager可以相对容易地实现这一点。考虑以下流程:当用户选择一个列表项时,传递所有图像的列表,例如URI和指示选择的一个索引,其中包含一个包含VIEWPER的活动。然后,您可以使用传递的列表初始化ViewPager的适配器,并将当前项设置为显示在索引中 有关如何使用Vi

我尝试在gridview中从webservice加载图像,结果成功。 我使用惰性适配器从web服务加载所有图像


如果我单击某个图像,它应该显示在下一个活动中,并且在滑动该图像时,应该显示下一个图像。有什么想法吗?

我想,使用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; }
}