Recycleview的联动效果

Android-RecycleView的双向列表左右联动效果 开篇 有一个需求,需要做一个左右双向联动的列表。类似于饿了么点餐页面,但是远没有那么复杂,只是用于展示的一个页面。只用了两个RecycleView加适配器,没有调用Fragment。 MainActivity public class MainActivity extends Activity { private RecyclerView mR... 阅读详情

下面我们将实现一个Recycleview的联动效果,即一个Recycleview滑动,另一个Recycleview也跟着滑动,最初想的是监听其中的一个Recycleview滑动,调用另一个Recycleview的scrollBy方法,其实跟随滑动,尝试了一下,一个监听另一个没什么问题,但是当另一个监听另一个时候就发生了问题,两个相互监听,导致陷入了一个死循环,最终内存溢出。看了这个办法是行不通,需要滑动一个的时候释放掉另一个监听,这样最终实现了,效果图如下:

一、布局文件及其初始化

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.linkage.linkage.MainActivity">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center"
            android:text="一个联动的Recycleview"/>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycleview_top"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <!--华丽的分割线-->
        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_marginBottom="20dp"
            android:layout_marginTop="20dp"
            android:background="#dddddd"/>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycleview_bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>

两个横滑的Recycleview分别为recycleview_bottom/recycleview_bottom,中间是分割线将其分开。然后再设置Adapter,为了方便起见两个共用一个Adapter。

    MyAdapter myAdapter = new MyAdapter(this, list);
    mRecyclerViewTop.setAdapter(myAdapter);
    mRecyclerViewBottom.setAdapter(myAdapter);

二、TopRecycleview滚动监听事件处理

1、top滑动时候bottomRecycleview联动

    RecyclerView.OnScrollListener topRecycleviewListener = new MyOnScrollListener() {
		@Override
		public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
			super.onScrolled(recyclerView, dx, dy);
			mRecyclerViewBottom.scrollBy(dx, dy);
		}
    };

2、设置topRecycleview滚动监听

    mRecyclerViewTop.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        private int mLastX;

        @Override
        public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent e) {
            if (recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_IDLE) {
                //当前子类没有滑动,则交由onTouchEvent处理
                onTouchEvent(recyclerView, e);
            }
            return false;
        }

        //监听topRecycleview滑动
        @Override
        public void onTouchEvent(RecyclerView recyclerView, MotionEvent e) {
            //添加子类View的监听,防止出现多指触控
            // 若是手指按下的动作,且另一个列表处于空闲状态,记录当前另一个列表的x坐标并对当前列表设置滚动监听
            if (e.getAction() == MotionEvent.ACTION_DOWN && mRecyclerViewBottom.getScrollState() == RecyclerView.SCROLL_STATE_IDLE) {
                mLastX = recyclerView.getScrollX();
                //让child进行滚动
                recyclerView.addOnScrollListener(topRecycleviewListener);
            } else {
                //否则移除监听
                if (e.getAction() == MotionEvent.ACTION_UP && recyclerView.getScrollX() == mLastX) {
                    recyclerView.removeOnScrollListener(topRecycleviewListener);
                }
            }
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });

三、BottomRecycleview滚动监听事件处理

1、bottom滑动时候topRecycleview联动

    RecyclerView.OnScrollListener childRecycleviewListener = new MyOnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            mRecyclerViewTop.scrollBy(dx, dy);
        }
    };

2、设置bottomRecycleview滚动监听

    mRecyclerViewBottom.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        private int mLastX;

        @Override
        public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent e) {
            if (recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_IDLE) {
                //当前子类没有滑动,则交由onTouchEvent处理
                onTouchEvent(recyclerView, e);
            }
            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView recyclerView, MotionEvent e) {

            //添加子类View的监听,防止出现多指触控
            // 若是手指按下的动作,且另一个列表处于空闲状态,记录当前另一个列表的x坐标并对当前列表设置滚动监听
            if (e.getAction() == MotionEvent.ACTION_DOWN && mRecyclerViewTop.getScrollState() == RecyclerView.SCROLL_STATE_IDLE) {
                mLastX = recyclerView.getScrollX();
                //让top进行滚动
                recyclerView.addOnScrollListener(childRecycleviewListener);
            } else {
                // 若当前列表原地抬起手指时,移除当前列表的滚动监听
                if (e.getAction() == MotionEvent.ACTION_UP && recyclerView.getScrollX() == mLastX) {
                    recyclerView.removeOnScrollListener(childRecycleviewListener);
                }
            }
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });

这样就实现了这个双Recycleview的联动效果。

源码地址:https://download.youkuaiyun.com/download/yoonerloop/10737647

 

 

侧边字母导航栏 - 联动recycleview 1.先看效果图 2.自定义view import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canva... 阅读详情

相关推荐

Android-Recyclerview实现列表联动

Recyclerview实现列表联动

两个(多个)RecyclerView联(滑)动实现

实现思路:设置滑动监听,滑动左边recycler,右侧recycler跟着移动相应距离即可(注意:条目高度要相等,如果添加分割线,注意分割线高度) private void syncScroll(final RecyclerView rlvLeft, final RecyclerView rlvRight) { rlvLeft.addOnScrollListener(new Recy

Yyongchao的博客 5987

PE启动盘结合360杀毒离线版:深度清除顽固病毒实战指南

在系统安全维护领域,离线查杀是一种在独立于宿主操作系统的环境下进行病毒扫描和清除的核心技术。其原理是通过一个预启动环境(如PE)加载杀毒软件,从而绕过可能已被感染或受保护的系统核心,直接访问和扫描磁盘文件。这项技术的核心价值在于能够彻底处理那些在正常系统运行时难以清除的深度隐藏病毒、Rootkit和驱动级木马。典型的应用场景包括应对勒索软件、顽固感染型病毒以及系统启动项被劫持等情况。本文以“PE启动盘”和“360杀毒离线版”这一经典组合为例,详细解析了从工具选型、环境部署到深度查杀策略的全流程,为系统维护人

weixin_29741447的博客 407

笔记:Android二级联动---RecyclerView实现

做笔记免得以后有重写一边或者忘了,仅供自己学习(只实现功能,无动画实现,左边没做可见处理,有空再做吧): 1、左右两个RecyclerView, 2、左边RecyclerView点击某个item同时item改变背景颜色,右边RecyclerView置顶相对应的item 3、右边RecyclerView滑动,左边RecyclerView相对应的item被选中并且改变颜色 1、MainActivity.java中使用 package com.myapplication; import android.os.

qq_33302559的博客 1942

论文阅读——Bayesian Knowledge Fusion(贝叶斯知识融合)

该篇论文解决了不确定环境中的信息融合问题。想象一下,有多位专家针对同一情况构建概率模型,我们希望汇总他们提供的信息。直接合并每个信息可能会遇到几个问题。例如,专家们可能不同意某个事件发生的概率,或者他们可能不同意两个事件之间因果关系的方向(例如,一个人认为 A 导致 B,而另一个人认为 B 导致 A)。他们甚至可能不同意概率网络中一组变量之间的整个依赖结构。

qq_64164071的博客 1496

CanOpen PDO映射实战:从原理到配置的完整指南

本文详细解析了CanOpen PDO映射的原理与配置流程,从基础通信机制到实战配置步骤,涵盖禁用PDO、清空映射、逐项映射和使能PDO等关键环节。特别针对西门子G120变频器、台达伺服和倍福CX控制器等不同厂商设备,提供了具体的配置技巧和常见问题排查指南,帮助工程师快速掌握多厂商设备间的PDO通信配置。

weixin_30718391的博客 515

Android实用小技巧(持续更新)

文章目录给drawableRight设置点击事件限制EditText可输入的字数,超出后提示文案解决RecycleView布局中GridLayoutManager和StaggeredGridLayoutManager添加头部和底部不占用一行的问题解决由于RecyclerView有刷新头存在,导致canScrollVertically(-1)时始终返回true的bug获取RecycleView第一个和最后一个可见Item的位置修改RadioButton的drawableRight图片与文字相隔的距离太大,导致

热爱不止,前行不息 3954

从零开始:用ADS 2023手把手教你设计2.4GHz Wi-Fi LNA(基于ATF-54143,附模型文件)

本文详细介绍了如何使用ADS 2023软件设计2.4GHz Wi-Fi频段的低噪声放大器(LNA),基于ATF-54143晶体管。内容涵盖模型导入、直流工作点确定、稳定性优化、噪声匹配等关键步骤,并提供可下载的模型文件包,帮助工程师快速掌握LNA设计技巧。

weixin_42531128的博客 319

安卓 上下联动

【代码】安卓 上下联动。

Chinese_H的博客 232

实测避坑:华为Atlas 300I DUO推理卡部署Qwen1.5,性能对比3090与完整配置流程

本文深度评测华为Atlas 300I DUO推理卡在部署Qwen1.5-14B大模型时的性能表现,并与RTX 3090进行对比。通过实测数据展示硬件参数、部署流程及性能优化建议,揭示国产AI加速卡在LLM推理中的独特优势与适用场景,为开发者提供完整的配置指南和避坑方案。

weixin_29083475的博客 790

CarPlay wired(USB)连接方案

CarPlay的wired(USB)的连接方案要求车载设备至少要支持USB2.0 Hi-Speed,支持USB Host Mode,该模式要求车载设备能够工作在USB device模式下,因为Apple设备在CarPlay中是作为USB Host的。而通常情况下,车载设备USB是工作在USB Host模式的,而外接的USB设备是工作在USB Device模式的,因而在这种情况下的CarPlay wired(USB)连接方案中就需要进行USB的模式切换。模式切换完成后便是Apple设备(USB HOST)的枚

Ke8323的博客 1万+

android商城左右侧列表关联,Android-RecycleView的双向列表左右联动效果

效果图.png开篇有一个需求,需要做一个左右双向联动的列表。类似于饿了么点餐页面,但是远没有那么复杂,只是用于展示的一个页面。只用了两个RecycleView加适配器,没有调用Fragment。MainActivitypublic class MainActivity extends Activity {private RecyclerView mRvClass;private RecyclerV...

weixin_34530164的博客 679

全球SAR卫星大盘点与回波数据处理专栏目录

本专栏将详细介绍各国各地区的SAR卫星的特点和性能,以及SAR回波数据的处理方法和技巧。主要介绍民用和商用SAR卫星,帮助你了解商业SAR卫星的最新动态和技术,MATLAB代码将全部开源。以下是专栏目录,持续更新中。

3158

android recycleview edittext 加减框联动 多重效果

edittext中需要设置最大值最小值,两边的联动加减号需要跟edittext进行联动。 每次edittext的监听需要改变其他效果。 单纯的用textwatcher已经不能够满足需求需要了,需要进行一个filter的设置,限定其输入的最大值最小值。 在recycleview 中进行每个item的edittext的值的获取与设置,注意:应该不要将这中组件封装成一个控件,空间之中的一些全局变量

从零点零开始 1421

姿态传感器/陀螺仪之IIS2DLPC 应用驱动程序设计

* 转换为°C单位 (参考温度为25°C,灵敏度为16 LSB/°C) */

corlin6688的博客 218

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

仿淘宝 RecycleView滑动效果 底部view联动

//效果图片 //xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_heig...

WHD472099458的博客 563

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android股票列表联动

  使用ScrollerView+RecycleView实现股票列表联动效果;一个可以拿来可以直接使用的解决方案,而且滑动流畅,带标题栏悬浮功能,支持整行的点击效果,支持长安事件; 效果如下图所示: 实现原理: 使用两个ScrollView:一个控制垂直方向上的滑动,一个控制水平方向上的滚动; public class SVerticallScrollView extends ...

huohuo5753的专栏 2443

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RecycleView与TabLayout联动展示更多功能列表页面的实现

TabLayout和RecycleView的联动关键在于两个监听的设置,同时将上方提及的几个细节注意一下即可;

itTalmud的博客 2051

Android行业和职业联动选择列表

行业和职业往往需要联动的,一般行业在左,职业在右。

聪哥的专栏 384

Android仿美团左右联动购物列表

有问题或者需要完整源码demo的私信我,我每天都看私信的。两个RecycleView。左右联动购物列表,不难。

聪哥的专栏 456

Android开发教程类似淘宝首页标签滑动效果

滑动RecycleView,底部的进度条跟着滑动。

聪哥的专栏 437

android item弹出popupwindow recycleview_Android-开源通用弹窗的封装CommonPopupWindow-地区选择弹窗实现...

开源通用弹窗目前增加了9种弹窗(7种类别),包括自定义、警告类、更新类、列表类、地区选择类。小萌新个人项目目前用到了警告类和列表类。地区选择弹窗后面项目升级也需要,所以就搞了搞。地区选择弹窗,三级联动效果:实现思路:1. 三个均分屏幕宽度的垂直Recycleview列表2. 省列表采用List参数,市列表根据省的名称获取HashMap>, 区列表根据市名称获取HashMap>. 目前暂...

weixin_39999116的博客 310

Recyclview实现仿京东淘宝金刚位带滚动进度条

首先先上效果图 整体是一个recycleview列表 下面滚动条是单独的view 监听recycleview列表的滑动,来控制view的滑动 先上布局 <android.support.v7.widget.RecyclerView android:id="@+id/rcy_icon" android:layout_width="match_parent"

yizhixiaohuli的博客 3137

饿了么购物车效果(附源码)

花了两天写了一个仿Android端饿了么外卖的效果,实现的功能包括: 左右侧列表联动顶部吸附标题利用二次贝塞尔曲线做成下单特效增加底部固定,自定义dialog 主要利用recycleview和属性动画、二次贝塞尔曲线做成抛物线效果,自定义的dialog实现底部栏固定,从底部滑出显示的会话框 picture2.png fucoe.gif 图片

巧克力的专栏 4644

Android开发教程实战案例源码分享-上左联动列表

由上左顶部标签决定列表内容需求,有些维修的app上就有这样的需求

聪哥的专栏 211

rn 实现上下滑动选择列表_Android-开源通用弹窗的封装CommonPopupWindow-地区选择弹窗实现...

开源通用弹窗目前增加了9种弹窗(7种类别),包括自定义、警告类、更新类、列表类、地区选择类。小萌新个人项目目前用到了警告类和列表类。地区选择弹窗后面项目升级也需要,所以就搞了搞。 Github FanChael/CommonPopupWindow 码云同步 NetNut/CommonPopupWindow 地区选择弹窗,三级联动效果: 实现思路: ...

weixin_35029653的博客 269
上一篇: okhttp源码分析
下一篇: 吸顶效果的另一种实现
一杯清泉
博客等级 码龄11年 314粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值