android - 从gridview中选择图片并全屏显示

标签 android gridview onitemclicklistener

我正在使用 ionic 库 ( from this link ) 在 gridview 中显示来自手机的图像和视频。我只需要在 gridview 中点击图像并在另一个 Activity 中显示图像。通常我会使用 Integer[position] 和 getItem() 来全屏显示图像。但是当我使用 Ion 库时如何在这里做到这一点?

public class MainActivity extends Activity {
    private MyAdapter mAdapter;
    private GridView view;

    // Adapter to populate and imageview from an url contained in the array adapter
    public class MyAdapter extends ArrayAdapter<String> {
        public MyAdapter(Context context) {
            super(context, 0);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // see if we need to load more to get 40, otherwise populate the adapter
            if (position > getCount() - 4)
                loadMore();

            if (convertView == null)
                convertView = getLayoutInflater().inflate(R.layout.image, null);

            // find the image view
            final ImageView iv = (ImageView) convertView.findViewById(R.id.image);

            // select the image view
            Ion.with(iv)
            .centerCrop()
            .placeholder(R.drawable.placeholder)
            .error(R.drawable.error)
            .load(getItem(position));

            return convertView;
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Ion.getDefault(this).configure().setLogging("ion-sample", Log.DEBUG);

        setContentView(R.layout.activity_main);

        int cols = getResources().getDisplayMetrics().widthPixels / getResources().getDisplayMetrics().densityDpi * 2;
        view = (GridView) findViewById(R.id.results);
        view.setNumColumns(cols);
        mAdapter = new MyAdapter(this);
        view.setAdapter(mAdapter);

        loadMore();

        view.setOnItemClickListener(new OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, mAdapter.getItem(position), Toast.LENGTH_SHORT).show();
                 // HERE I WANT TO GIVE THE INTENT TO DISPLAY IMAGE IN FULL SCREEN

            }  

        });
    }

    Cursor mediaCursor;
    public void loadMore() {
        if (mediaCursor == null) {
            mediaCursor = getContentResolver().query(MediaStore.Files.getContentUri("external"), null, null, null, null);
        }

        int loaded = 0;
        while (mediaCursor.moveToNext() && loaded < 10) {
            // get the media type. ion can show images for both regular images AND video.
            int mediaType = mediaCursor.getInt(mediaCursor.getColumnIndex(MediaStore.Files.FileColumns.MEDIA_TYPE));
            if (mediaType != MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE
                && mediaType != MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO) {
                continue;
            }

            loaded++;

            String uri = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Files.FileColumns.DATA));
            File file = new File(uri);
            // turn this into a file uri if necessary/possible
            if (file.exists())
                mAdapter.add(file.toURI().toString());
            else
                mAdapter.add(uri);
        }
    }
}

最佳答案

      view.setOnItemClickListener(new OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, mAdapter.getItem(position), Toast.LENGTH_SHORT).show();
                 // HERE I WANT TO GIVE THE INTENT TO DISPLAY IMAGE IN FULL SCREEN

            Intent i = new Intent(MainActivity.this, FullScreenViewActivity.class);
            i.putExtra("fullimagepath", mAdapter.get(position));
            MainActivity.this.startActivity(i);

            }  

全屏 View Activity

     public class FullScreenViewActivity extends Activity {
               ImageView fullImage;

                @Override
                    public void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);

                        Ion.getDefault(this).configure().setLogging("ion-sample", Log.DEBUG);

                        setContentView(R.layout.activity_main);

                       String s = getIntent().getStringExtra("fullimagepath");
                       fullImage = (ImageView) findViewById(R.id.fullimage);

                 Ion.with(fullImage)
                .centerCrop()
                .placeholder(R.drawable.placeholder)
                .error(R.drawable.error)
                .load(s);
}}

关于android - 从gridview中选择图片并全屏显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35266031/

相关文章:

android - onItemClick 仅在文本上触发,而不是在 ListView 的整行上触发

java - 尝试在 SurfaceView 的 Canvas 上制作动画

java - 如何清除字符串数组 Android/Java 中的结果

android相机点击固定频率

wpf - 带有 ViewModel 的网格 - WPF

ASP.NET - 如何将 GridView Delete 包装在 try catch 或停止行删除中

java - BaseAdapter OnItemClickListener 从未被调用

android - 生物认证实现

c# - 如何在 gridview 的编辑模式下从下拉列表中获取选定的值?

android - 在GridView中设置item长按监听