Skip to content

Commit b314f86

Browse files
committed
fix(Android): 修复List组件滚动距离刷新未重置的问题
1 parent 1dd53f3 commit b314f86

File tree

1 file changed

+13
-7
lines changed
  • android/hummer-component/src/main/java/com/didi/hummer/component/list

1 file changed

+13
-7
lines changed

android/hummer-component/src/main/java/com/didi/hummer/component/list/List.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ public class List extends HMBase<SmartRefreshLayout> {
8989
private boolean isScrollStarted = false;
9090
private ScrollEvent scrollEvent = new ScrollEvent();
9191

92-
private RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() {
93-
int offsetX = 0;
94-
int offsetY = 0;
92+
private int scrollOffsetX = 0;
93+
private int scrollOffsetY = 0;
9594

95+
private RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() {
9696
@Override
9797
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
9898
if (!mEventManager.contains(ScrollEvent.HM_EVENT_TYPE_SCROLL)) {
@@ -108,13 +108,13 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
108108
// 但是当RecyclerView的item有变多或变少时,可能产生误差。
109109
// int offsetX = recyclerView.computeHorizontalScrollOffset();
110110
// int offsetY = recyclerView.computeVerticalScrollOffset();
111-
offsetX += dx;
112-
offsetY += dy;
111+
scrollOffsetX += dx;
112+
scrollOffsetY += dy;
113113

114114
scrollEvent.setType(ScrollEvent.HM_EVENT_TYPE_SCROLL);
115115
scrollEvent.setState(ScrollEvent.HM_SCROLL_STATE_SCROLL);
116-
scrollEvent.setOffsetX(DPUtil.px2dpF(getContext(), offsetX));
117-
scrollEvent.setOffsetY(DPUtil.px2dpF(getContext(), offsetY));
116+
scrollEvent.setOffsetX(DPUtil.px2dpF(getContext(), scrollOffsetX));
117+
scrollEvent.setOffsetY(DPUtil.px2dpF(getContext(), scrollOffsetY));
118118
scrollEvent.setDx(DPUtil.px2dpF(getContext(), dx));
119119
scrollEvent.setDy(DPUtil.px2dpF(getContext(), dy));
120120
scrollEvent.setTimestamp(System.currentTimeMillis());
@@ -415,6 +415,11 @@ private void hideKeyboardIfNeed(int dx, int dy) {
415415
}
416416
}
417417

418+
private void resetScrollOffset() {
419+
scrollOffsetX = 0;
420+
scrollOffsetY = 0;
421+
}
422+
418423
@JsAttribute("mode")
419424
public void setMode(String strMode) {
420425
int curMode;
@@ -611,6 +616,7 @@ public void refresh(int count) {
611616
}
612617
isLoadingMore = false;
613618

619+
resetScrollOffset();
614620
refreshNodeTree();
615621
}
616622

0 commit comments

Comments
 (0)