嵌套回收视图(android)中的粘性标题

嵌套回收视图(android)中的粘性标题,android,android-recyclerview,Android,Android Recyclerview,正如Sevastyan Savanyuk在: 我在外部回收器视图中有一个嵌套的回收器视图。我只希望我的内部回收器视图有一个粘性标题。 但是,onDrawOver方法只调用了一次 结果是,我在我的onDrawOver中绘制了标题,但它没有粘性 我只有一个粘性标题(项目0),以下是我的代码(kotlin): 以下是我的onDrawOver方法: @Override public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView par

正如Sevastyan Savanyuk在:

我在外部回收器视图中有一个嵌套的回收器视图。我只希望我的内部回收器视图有一个粘性标题。 但是,
onDrawOver
方法只调用了一次
结果是,我在我的
onDrawOver
中绘制了标题,但它没有粘性

我只有一个粘性标题(项目0),以下是我的代码(kotlin):

以下是我的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
方法,救命


您是如何解决这个问题的?
@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);
}