项目有类似的功能,在网上找了不少都不是很符合,结合起来自己做了一个,用2个recycleview就可以解决了。

主要是右边带动左边列表滚动,先看图吧:录制的不是很流畅,可以自己下下来看看

TIM图片20180905173437.gif

1.关键代码

private fun smoothMoveToPosition() {

mShopRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {

override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {

super.onScrolled(recyclerView, dx, dy)

if (mRightList[first].isHeader) {

val view = mShopLinearLayoutManager.findViewByPosition(first)

if (view != null) {

//如果此组名item顶部和父容器顶部距离大于等于title的高度,则设置偏移量

if (view.top >= tHeight) {

right_title.y = (view.top - tHeight).toFloat()

} else {

//否则不设置

right_title.y = 0f

}

}

}

//因为每次滑动之后,右侧列表中可见的第一个item的position肯定会改变,并且右侧列表中可见的第一个item的position变换了之后,

//才有可能改变右侧title的值,所以这个方法内的逻辑在右侧可见的第一个item的position改变之后一定会执行

val firstPosition = mShopLinearLayoutManager.findFirstVisibleItemPosition()

if (first != firstPosition && firstPosition >= 0) {

//给First赋值

first = firstPosition

//不设置Y轴的偏移量

right_title.y = 0f

//判断如果右侧可见的第一个item是否是header,设置相应的值

if (mRightList[first].isHeader) {

right_title.text = mRightList[first].header

} else {

right_title.text = mRightList[first].t.name

}

}

/**

*遍历左边列表,列表对应的内容等于右边的title,则设置左侧对应的item高亮

*/

mLeftList.forEachIndexed { index, s ->

if (mLeftList[index] == right_title.text) {

mSearchLeftListQuickAdapter.selectItem(index)

moveToCenter(index)

}

}

//如果右边最后一个完全显示的item的position,等于bean中最后一条数据的position(也就是右侧列表拉到底了),

//则设置左侧列表最后一条item高亮

if (mShopLinearLayoutManager.findLastCompletelyVisibleItemPosition() == mRightList.size - 1) {

mSearchLeftListQuickAdapter.selectItem(mLeftList.size - 1)

moveToCenter(mLeftList.size - 1)

}

}

override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {

super.onScrollStateChanged(recyclerView, newState)

//获取右侧title的高度

tHeight = right_title.height

}

})

}

//将当前选中的item居中,如果不加这段代码,左边的recyclerview并不会跟随滚动

private fun moveToCenter(position: Int) {

//将点击的position转换为当前屏幕上可见的item的位置以便于计算距离顶部的高度,从而进行移动居中

val childAt = mSelectedRecyclerView.getChildAt(position - mLinearLayoutManager.findFirstVisibleItemPosition())

if (childAt != null) {

val y = childAt.top - mSelectedRecyclerView.height / 2

mSelectedRecyclerView.smoothScrollBy(0, y)

}

}

2.左边adapter里面关键代码

fun selectItem(position: Int) {

tv.forEachIndexed { index, _ ->

if (position == index) {

tv[index].setTextColor(ContextCompat.getColor(mContext, R.color.colorAccent))

tv[index].setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorPrimary))

} else {

tv[index].setTextColor(ContextCompat.getColor(mContext, R.color.colorPrimary))

tv[index].setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorAccent))

}

}

}

这里是循环添加adapter的TextView,因为如果循环的是数据的话,当你数据过多,那么就会有数组越界的问题,问题recycleview适配器一开始并没有那么加载出来那么多TextView,例如:一个屏幕只能看见12条数据,那么当你的数据超过12的时候一开始就会出错,循环tv就没有这个问题了。具体有需要的自己看代码吧。

参考:https://www.jianshu.com/p/82ced8707f2b

github:https://github.com/byning2012/RVandRv

拼多多搜索页面html,仿拼多多搜索页面多列表联动相关推荐

  1. android 仿搜索动画,Android仿京东顶部搜索框滑动伸缩动画效果

    最近使用京东发现,京东顶部的搜索框有一个新的伸缩效果,根据用户的手势滑动,伸缩搜索框.觉得效果还不错,就看了下其他的应用有没有这种伸缩的效果,发现安居客也使用了类似的一种效果,然后就想着实现这样的一种 ...

  2. 制作拼多多app网页css,5+App下Mui框架开发仿拼多多App

    5+App下Mui框架开发仿拼多多App 一.整体项目介绍说明 二.页面展示 三.页面实现主要技术和难点 四.关键代码讲解 五.源码资源 一.整体项目介绍说明 "拼多多"App+移 ...

  3. 5+App下Mui框架开发仿拼多多App

    5+App下Mui框架开发仿拼多多App 一.整体项目介绍说明 二.页面展示 三.页面实现主要技术和难点 四.关键代码讲解 五.源码资源 一.整体项目介绍说明 "拼多多"App+移 ...

  4. 来客推仿拼多多电商商城小程序源码

    简介: 一款来客推内核仿拼多多电商商城小程序源码,APP+钱包+开源版. 安装步骤: 环境要求 环境配置正常,最好是PHP5.6+Mysql5.5 win下面可以使用phpstudy集成环境部署安装 ...

  5. 今日上新推荐源码,高仿微信社交,高仿拼多多商城

    Flutter社交App源码 介绍:利用 Flutter 来高仿微信(WeChat) 7.0.0+ App,代码规范惊为天人.注释详解令人发指.细节处理精益求精.核心功能配备文档.接近98%还原度的原 ...

  6. 电商搜索运营知识-拼多多关键词搜索排名规则剖析-拼多多直通车

    目录 一.工作场景 二.首先讲一下,什么叫做关键词搜索查找 1.被动式查看 2.接下来说一说 主动式 查找. 三.直通车关键词搜索 四.自然搜索排名规则 五.如何提升产品排名 根据历史浏览,被浏览过的 ...

  7. 拼多多:item_search-根据关键词取商品列表接口,拼多多关键词搜索API接口,拼多多上货API接口,拼多多API接口

    一.拼多多:item_search-根据关键词取商品列表接口,拼多多关键词搜索API接口,拼多多上货API接口代码如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key( ...

  8. 淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...

  9. Thinkphp内核高仿拼多多拼团源码 完美运营级商城系统

    Thinkphp内核高仿拼多多拼团源码 完美运营级商城系统 可封装APP 多用户 完美运营级商城系统支持商家入驻,是目前来说最新微信拼团系统.完美运营版,带详细配置教程! 运行环境:php+mysql ...

最新文章

  1. 数据结构与算法笔记(十)—— 快速排序
  2. 数据中心液冷技术发展分析
  3. 【深度学习】编写同时在PyTorch和Tensorflow上工作的代码
  4. 那些决定模型上限的操作
  5. android 开源计算器,开源Windows 10计算器应用迎来Web/Android/iOS移植版
  6. springboot项目中日志分类
  7. php网站xml链接,xml图像超链接的制作代码
  8. 贷款不还会有什么后果?
  9. Android中ExpandableListView控件基本使用
  10. 后端比android简单,android开发怎么少的了后端(下)
  11. 内存泄露valgrind
  12. matlab 图例 显示为公式样式
  13. 中国GBA模拟器先驱李可文不幸去世
  14. CSS Sprite雪碧图应用
  15. 关于selenium获取网页下一页的点击事件
  16. 荣耀手机不出鸿蒙系统,惊喜!4部荣耀手机可升级至华为鸿蒙系统,网友表示:终于等到了...
  17. 【数据清洗】数据清洗流程及经验
  18. 梅科尔工作室-李庆浩 深度学习-KNN算法
  19. t480s控制面板打开触摸板_ThinkPad T480s 用户指南V4.0--更换键盘部分
  20. 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 - 左潇龙 - 博客园...

热门文章

  1. 多旋翼飞行器理论与实践系列实验笔记:第一章-课程介绍
  2. python3配置PyOpenGL环境
  3. OctopusWallets(章鱼钱包)是什么
  4. 《程序员的自我修养》导读
  5. gzip、bzip2、zip、rar、7z、compress 加压、解压
  6. 解决steam下载速度过慢的问题
  7. 北理工计算机2020学硕录取,北京理工大学各学院2020年硕士研究生拟录取名单的公示...
  8. PCB Design Rules﹣Routing Corners
  9. 盘古越狱工具在用户空间的行为
  10. Spring 的前置处理器介绍