Android Studio第三十一期 - 记录RecyclerView滚动位置并恢复

代码已经整理好,看下面~有一天你会用到的~不客气哈~

//监听RecyclerView滚动状态
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        if(recyclerView.getLayoutManager() != null) {
            getPositionAndOffset();
        }
    }
});

/**
 * 记录RecyclerView当前位置
 */
private void getPositionAndOffset() {
    LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
    //获取可视的第一个view
    View topView = layoutManager.getChildAt(0);
    if(topView != null) {
        //获取与该view的顶部的偏移量
        lastOffset = topView.getTop();
        //得到该View的数组位置
        lastPosition = layoutManager.getPosition(topView);
    }
}

/**
 * 让RecyclerView滚动到指定位置
 */
private void scrollToPosition() {
    if(mRecyclerView.getLayoutManager() != null && lastPosition >= 0) {
        ((LinearLayoutManager) mRecyclerView.getLayoutManager()).scrollToPositionWithOffset(lastPosition, lastOffset);
    }
}

时间: 2024-12-16 21:33:43

Android Studio第三十一期 - 记录RecyclerView滚动位置并恢复的相关文章

Android Studio第三十期 - 介绍几种网络请求方式写法

框架git地址:附(爱一个人就要爱他(loader)的全部~) https://github.com/geeklx/MakeJarAAR 1:http://192.168.200.96/v2/weather/weather.get.info 请求方式:POST     请求示例 {    "verify_info":{        "app":{            "app_id":"2e263d60-2d48-43d9-b699

Android Studio第三十三期 - 蓝牙开发初识~

遇见到坑爹的队友只有接受现实并且解决问题~ 首先介绍一下网上几乎所有的能搜到的方法: 1.首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限 <uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permissionandroid:name="android.permission.BLUETOOTH" /> 2.在androi

Android Studio 第五十一期 - 自定义RecycleView Gallery

代码已经整理好,效果如下图:(支持Verical Horizontal 支持自定义放大位置 支持滚动速度) 图片1: 图片2: 地址: https://github.com/geeklx/MyApplication/tree/master/p010_recycleviewall/src/main/java/com/shining/p010_recycleviewall/recycleviewgalleryhorizontal

Android Studio第三十二期 - RecycleView不同布局适配器写法

新需求,如图,代码已经整理好,效果如下图: 单个: 多个: demo效果图: 地址:https://github.com/geeklx/MyApplication/tree/master/p010_recycleviewall/src/main/java/com/example/p010_recycleviewall/recycleviewdifferentitem

Android Studio第三十九期 - popWindows置顶

/** * Window type: system window, such as low power alert. These windows * are always on top of application windows. * In multiuser systems shows only on the owning user's window. */ setWindowLayoutType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

Android Studio第三十六期 - 模块化Activity管理Fragment

代码已经整理好.效果如下图: 图1: 图2: 地址:https://github.com/geeklx/MyApplication/tree/master/p010_recycleviewall/src/main/java/com/example/p010_recycleviewall/shoucang

Android Studio第三十八期 - HIOS跳转协议解决URI跳转原生页面并传递参数

代码已经整理好,效果如下图: 图1: 图2: 图3: 地址:https://github.com/geeklx/MyApplication/tree/master/p022_hois HiosRegister: package com.example.p022_hois.hioscommon; import com.example.p022_hois.hoisjump.HiosAlias; public class HiosRegister {     private static final 

Android Studio 第六十一期 - Android ToastUtil

代码已经整理好,效果如下如图: ? ?地址:https://github.com/geeklx/myapplication2018/tree/master/p005_toastutils 原文地址:http://blog.51cto.com/liangxiao/2085570

Android Studio 第七十一期 - Android 系统声音控制

代码已经整理好,效果如下图: 地址:https://github.com/geeklx/myapplication2018/tree/master/p014_systemvoices 原文地址:http://blog.51cto.com/liangxiao/2150520