липкий заголовок во вложенном RecyclerView (android) - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь реализовать липкий заголовок, как сказал Севастян Саванюк в:
Как сделать липкие заголовки в RecyclerView? (Без внешней библиотеки)

У меня есть вложенный вид переработчика в виде внешнего переработчика. Я просто хочу, чтобы у моего внутреннего представления переработчика был липкий заголовок. Но onDrawOver метод вызывается только один раз.
В результате я рисую заголовок в моем onDrawOver, но он не липкий!

У меня только один липкий заголовок (элемент 0), вот мой код (kotlin):

    override fun isHeader(itemPosition: Int): Boolean = itemPosition == 0

    override fun getHeaderPositionForItem(itemPosition: Int): Int = 0

вот мой метод onDrawOver:

@Override
public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
    super.onDrawOver(c, parent, state);
    View topChild = parent.getChildAt(0);
    if (topChild == null) {
        return;
    }

    int topChildPosition = parent.getChildAdapterPosition(topChild);
    if (topChildPosition == RecyclerView.NO_POSITION) {
        return;
    }

    int headerPos = mListener.getHeaderPositionForItem(topChildPosition);
    View currentHeader = getHeaderViewForItem(headerPos, parent);
    fixLayoutSize(parent, currentHeader);
    int contactPoint = currentHeader.getBottom();
    View childInContact = getChildInContact(parent, contactPoint, headerPos);

    if (childInContact != null) {
        int itemPosition = parent.getChildAdapterPosition(childInContact);
        if (mListener.isHeader(itemPosition)) {
            moveHeader(c, currentHeader, childInContact);
            return;
        }
    }

    drawHeader(c, currentHeader);
}

Как мне закрепить заголовок, почему метод onDrawOver вызывается только один раз, помогите!

enter image description here

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