Открыть картинку на весь экран из Галереи (Java)

227
19 ноября 2017, 13:53

Всем добрый день! Разрабатываю приложение для Android. В приложении галерея, подкачиваю картинки с сайта через библиотеку Picasso. Картинки подгружаются в сетку небольших изображений(GridView, 3 столбца) и по задумке при нажатии на любую картинку нужно, чтобы эта картинка открывалась в новой активности на весь экран.

Экран галереи:

public class LindelofGalery extends Fragment {
    GridView grid;

    @Nullable    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View rootView =
                inflater.inflate(R.layout.lindelof_galery, container, false);

        grid = (GridView) rootView.findViewById(R.id.grid); //  находим таблицу
        grid.setAdapter(new ImageAdapter(getActivity().getApplication()));
        grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent i = new Intent(getActivity().getApplicationContext(), LindelofGaleryFullImage.class);
                i.putExtra("id", position);
                startActivity(i);

            }
        });

        return rootView;

    }
    public static class ImageAdapter extends BaseAdapter {

        public static final String[] IMAGES = new String[] {
                "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png",
                "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png",
                "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png",
                "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png",
                "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png",
                "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png",
                "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png",


        };
        private static final String[] IMAGE_URLS = IMAGES;

        public LayoutInflater inflater;
        Context c;
        ImageAdapter(Context context) {
            inflater = LayoutInflater.from(context);
            c = context;
        }

        @Override
        public int getCount() {
            return IMAGES.length;
        }
        @Override
        public Object getItem(int position) {
            return null;
        }
        @Override
        public long getItemId(int position) {
            return 0;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            final ViewHolder holder;
            View view = convertView;
            if (view == null) {
                view = inflater.inflate(R.layout.item_grid_image, parent, false);
                holder = new ViewHolder();
                assert view != null;
                holder.imageView = (ImageView) view.findViewById(R.id.image);
                holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
                view.setTag(holder);
            } else {
                holder = (ViewHolder) view.getTag();
            }
            Picasso.with(c)
                    .load(IMAGE_URLS[position])
                    .placeholder(R.drawable.ic_stub)
                    .error(R.drawable.ic_launcher)
                    .fit()
                    .into(holder.imageView, new Callback() {
                        @Override
                        public void onSuccess() {
                            holder.imageView.setVisibility(View.VISIBLE);
                            holder.progressBar.setVisibility(View.INVISIBLE);
                        }
                        @Override
                        public void onError() {
                            holder.progressBar.setVisibility(View.VISIBLE);
                            holder.imageView.setVisibility(View.INVISIBLE);
                        }
                    });
            return view;

        }
    }
    static class ViewHolder {
        ImageView imageView;
        ProgressBar progressBar;
    }

}

Код картинки на весь экран:

public class LindelofGaleryFullImage extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lindelof_full_image);

        Intent i = getIntent();
        int position = i.getExtras().getInt("id"); // получаем ID картинки
        LindelofGalery.ImageAdapter adapter = new LindelofGalery.ImageAdapter(this); 
        ImageView imageView = (ImageView) findViewById(R.id.imageView); 
        imageView.setImageResource(Integer.parseInt(adapter.IMAGES[position])); 

        ActionBar actionBar = getSupportActionBar(); 
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);

        }
    }

}

При вылете приложения в логах:

11-18 00:49:36.031 3571-3571/com.example.mish.biografy7 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mish.biografy7/com.example.mish.biografy7.Lindelof.LindelofGaleryFullImage}: java.lang.NumberFormatException: Invalid int: "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png" at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391) at android.app.ActivityThread.access$600(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1335) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:155) at android.app.ActivityThread.main(ActivityThread.java:5520) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NumberFormatException: Invalid int: "http://example.com/wp-content/uploads/2017/03/Liquid-silicone-2-1.png" at java.lang.Integer.invalidInt(Integer.java:138) at java.lang.Integer.parse(Integer.java:375) at java.lang.Integer.parseInt(Integer.java:366) at java.lang.Integer.parseInt(Integer.java:332) at com.example.mish.biografy7.Lindelof.LindelofGaleryFullImage.onCreate(LindelofGaleryFullImage.java:32) at android.app.Activity.performCreate(Activity.java:5066) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)

Раньше загружал картинки из drawable(без библиотеки Picasso), получалось реализовать данную идею. Но тогда у меня данные были в int, сейчас в String(ссылки на сайт с картинками), и, судя по логам, ошибка как раз в этом.

Подскажите, пожалуйста, как правильно реализовать метод, чтобы получалось перейти на новую активность с картинкой на весь экран?

READ ALSO
Реализация кнопок awt

Реализация кнопок awt

Плохо понимаю принцип реализации кнопокБуду признателен за разъяснения

186
установка sqldeveloper на ubuntu 16.04

установка sqldeveloper на ubuntu 16.04

При первой попытке запуска sqldeveloper система запрашивает полный путь установленного JDKДля того, чтобы узнать полную путь до jdk я использую команду...

216
Краш приложения

Краш приложения

При нажатии на число месяца приложение падает

200