// 定义一个记录位置的变量
private int atPosition = 0;
// 在数据加载完成后进行操作(此方法放在合适的位置)
// 在列表数据加完完成后,执行此方法,对数据进行操作
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// 点击了的父类项的位置下标
int atPosition;
if ("".equals(PrivateShardedPreference.getInstance(CheckOnWorkAttendanceListActivity.this).getString("pressCheckOnWorkItemPosition", ""))) {
atPosition = 0;
} else {
atPosition = Integer.parseInt(PrivateShardedPreference.getInstance(CheckOnWorkAttendanceListActivity.this).getString("pressCheckOnWorkItemPosition", ""));
}
// 利用线程
mRecyclerView.post(() -> {
// 记录上次点击的位置,并且滚动到此位置,并且此项置顶
if (atPosition != -1) {
mRecyclerView.scrollToPosition(atPosition);
LinearLayoutManager mLayoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager(); // 这里的 LinearLayoutManager对象只能是动态获取,不能用全局的。
mLayoutManager.scrollToPositionWithOffset(atPosition, 0);
}
});
mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
RecyclerView记录其滚动位置,刷新时此条数据置顶
于 2022-03-01 10:06:41 首次发布