Как установить несколько промежутков для таблицы сетки переработчика и показать верхний и нижний колонтитулы

У меня есть фрагмент, перечисляющий пару элементов из массива, где массив заполняется из API. Также я создал класс фрагмента и адаптер утилизатора, где я назвал Layout Manager как представление сетки. На мой взгляд, заголовок содержит два элемента массива и нижний колонтитул рекламы. Я успешно реализовал заголовок, но не получил должным образом свой нижний колонтитул. Предлагаемые способы ценны без серьезных изменений.

Фрагмент

  mRecyclerView = (RecyclerView) view.findViewById(R.id.mrecycler_channel);
        mRecyclerView.setHasFixedSize(true);
        GridLayoutManager gm = new GridLayoutManager(getActivity(),2);
        gm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return position == 0 ? 2:1;
            }
        });
        mRecyclerView.setLayoutManager(gm);
        mAdapter = new StationsListAdapter(getActivity(), listStations, listlikedStations, listner);
        mRecyclerView.setAdapter(mAdapter);

Адаптер

      @Override
        public int getItemCount() {
        int array = listAddress.size();
            Log.d("abhil",""+array);
    //        if(listAddress.size()>0) {
                return listAddress.size() - 1;
    //        }else{
    //            return 0;
    //        }
        }

        @Override
        public int getItemViewType(int position) {
            if (position == 0) {
                return TYPE_HEADER;
            } else if(isPositionFooter(position)){
                return AD_TYPE;
            }
            return TYPE_ITEM;
        }
 private boolean isPositionFooter (int position) {
        return position == listAddress.size() + 1;
    }

необходимо установить объявление на последней позиции как обычное рекламное объявление, показываемое в Recyclerlistview.

1 ответ

Вы можете достичь этого следующим образом:

gm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            //Do your lookup here

            return (position == 0 || position == listStations.size() - 1) ? 2 : 1;
        }
    });
Другие вопросы по тегам