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