Выберите несколько изображений из GridView для удаления - PullRequest
0 голосов
/ 06 октября 2019

У меня есть фрагмент с GridView изображений, заполненный Пикассо, и я нажимаю на изображения, чтобы вывести меня на полный экран выбранного изображения. Я хочу иметь возможность "выбрать" несколько, аналогично галерее камеры iphone, чтобы выбрать для удаления.

У меня есть меню опций, где вы можете выбрать «выбрать». В onOptionsItemSelected как мне вернуться к моему GridView? И как мне изменить onClick на «выбрать» и изображение вместо того, чтобы сделать его полноэкранным?

У меня есть GridView, заполненный изображениями, работающими так, как задумано. Когда вы нажимаете на изображение, оно открывает действие FullImage, которое делает изображение полноэкранным. И вы можете нажать на изображение еще раз, чтобы завершить полноэкранный режим.

открытый класс GalleryFragment extends Fragment {

private GalleryViewModel galleryViewModel;

public View onCreateView(@NonNull LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {
    galleryViewModel =
            ViewModelProviders.of(this).get(GalleryViewModel.class);
    View root = inflater.inflate(R.layout.fragment_gallery, container, false);


    // Allows gallery to change nav bar use
    setHasOptionsMenu(true);


    setUpGrid(root);
    return root;
}

/**
 * Sets up the grid layout, uses ImageAdapter java class
 *
 *  Also allows images to be clicked on
 *
 * @param root the page view (fragment_gallery)
 */
private void setUpGrid(View root) {
    GridView gridView = (GridView) root.findViewById(R.id.photoGrid);
    gridView.setAdapter(new ImageAdapter(root.getContext()));

    // Allows each image to be clicked on
    gridView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                                int position, long id) {
            /*
                This is how you pass image to be fullscreen

                Note: getApplicationContext is for activities
             */
            Intent i = new Intent(getActivity().getApplicationContext(), FullImageActivity.class);
            i.putExtra("id", position);
            startActivity(i);
        }
    });
}

/**
 * Changes option menu layout to fit fragment
 *
 * @param menu
 * @param inflater
 */
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.clear(); //Empty the old menu
    inflater.inflate(R.menu.gallery, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

/**
  Handles clicking item in option menu
 * @param item
 * @return
 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case R.id.gallery_delete_multiple:

            // How do I access the view model or GridView?

    }

    return super.onOptionsItemSelected(item); // important line
}

}

Это мой код адаптера изображения, сейчас он вытягивает изображения из моей папки для рисования (не важно)

открытый класс ImageAdapter расширяет BaseAdapter {private Context mContext;

public ImageAdapter(Context c) {
    mContext = c;
}

public int getCount() {
    return mThumbIds.length;
}

public Object getItem(int position) {
    return null;
}

public long getItemId(int position) {
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if (convertView == null) {
        imageView = new ImageView(mContext);
    } else {
        imageView = (ImageView) convertView;
    }

    //imageView.setImageResource(mThumbIds[position]);

    /*
        More efficient way of loading images into gallery view
     */
    Picasso.get()
            .load(mThumbIds[position])
            .resize(350,350)
            .centerCrop()
            .error(R.drawable.ic_menu_send)
            .into(imageView);

    return imageView;
}

/*
    Where it grabs images from, Can change path if needed
 */
public Integer[] mThumbIds = {
        // test images

        R.drawable.cover_art,
        R.drawable.moon,
        R.drawable.cat

};

}

Я не уверен, как передать viewmodel / inflator или GridView в функцию onOptionsItemSelected

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...