Как создать значок плюса в сетке в окне повторного просмотра для добавления изображений? - PullRequest
0 голосов
/ 01 февраля 2019

enter image description here

Как мне создать что-то подобное, используя gridlayoutManager В reyclerview?Как сделать это эффективно, чтобы каждый раз, когда я нажимал на плюсовое изображение, я мог получить новое изображение со своего устройства, чтобы изображение отображалось в сетке внизу или в новом столбце?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы можете создать два макета: один со значком +, а другой - где изображение будет отображаться для вашего адаптера сетки.Затем вы можете проверить положение и вернуть нужный макет.

      private static final int VIEW_TYPE_ONE = 1;
      private static final int VIEW_TYPE_TWO = 2;

      // Determines the appropriate ViewType according to the position
@Override
public int getItemViewType(int position) {

    if (position == 0 ) {

        return VIEW_TYPE_ONE;
    } else {

        return VIEW_TYPE_TWO;
    }
}

Затем в вашем onCreateviewHolder:

     // Inflates the appropriate layout according to the ViewType.
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;

    if (viewType == VIEW_TYPE_ONE) {
        view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.your_plus_icon_layout, parent, false);
        return new PlusIconViewHolder(view);
    } else if (viewType == VIEW_TYPE_MESSAGE_TWO) {
        view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.your_normal_image_layout, parent, false);
        return new NormalViewHolder(view);
    }

    return null;
}

В вашем onBindViewHolder,

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    switch (holder.getItemViewType()) {
        case VIEW_TYPE_ONE:
             holder.bind();
            break;
        case VIEW_TYPE_MESSAGE_TWO:
             holder.bind(imageList.get(position -1));
    }
}

Обратите внимание, что у меня есть позиция отправки - 1 элемент из списка. Это потому, что изображения будут отображаться из 1 индекса, потому что индекс 0 занят вашим значком +.И да, вам также нужно создать двух владельцев для их соответствующих функций.

0 голосов
/ 01 февраля 2019

Вам необходимо создать адаптер, который поддерживает два типа элементов - фото один и «+» один.Затем добавьте специальный элемент «+» на первую позицию в списке, который вы предоставляете адаптеру.

Проверьте эту ссылку: « RecyclerView с несколькими типами элементов » от Vitaly Vivchar.

...