1

Есть список, построенный на cardView. Каким образом можно сделать так, чтобы после каждой, к примеру, 20 записи, вставлялся какой-либо view (пусть это будет textView), а после него уже дальше продолжался список.

Какая реализация возможна? Не сталкивался с этим, но представляю себе это так: * в layout файле макета cardview, дописать помимо самого cardview еще этот самый textView и сделать его невидимым. А после, на проверке в адаптере, делать видимым в зависимости от такого, какой сейчас по счету item в списке идет.

pavlofff
  • 36,765
whalemare
  • 1,000
  • 1
    http://ru.stackoverflow.com/a/470214/177345 - не надо ничего представлять и выдумывать - для вашей задачи есть типовое решение, заложенное в класс ListView изначально. Нужно переопределить метод getItemViewType(), который определяет айтем какого вида требуется в текущей позиции. Гайд по ссылке для RecyclerView, но для ListView почти то же самое. – pavlofff Jan 15 '16 at 12:57
  • 1
    @pavlofff, да, так можно, но, в отличие от предложенного в вопросе, возникает надобность, как мне кажется, в постоянном учёте этих вставленных элементов при определении из какой позиции брать данные для "обычных" элементов. – ЮрийСПб Jan 15 '16 at 13:28

1 Answers1

1

Достаточно в методе getItemViewType() адаптера в зависимости от текущей позиции указывать другой тип элемента:

private static final int VIEW_TYPE_CARDVIEW = 0;
private static final int VIEW_TYPE_TEXTVIEW = 0;

@Override
public int getItemViewType(int position) {
    return position % 20 == 0 ? VIEW_TYPE_TEXTVIEW : VIEW_TYPE_CARDVIEW;
}

И в зависимости от текущего типа элемента в методе getView() отдавать TextView либо CardView

IlyaGulya
  • 215