首页 > 其他分享 >Android RecyclerView 获取当前滚动到的Item项

Android RecyclerView 获取当前滚动到的Item项

时间:2024-06-07 09:34:31浏览次数:20  
标签:int recyclerView Item Android RecyclerView layoutManager firstCompletelyVisibleI

背景:RecyclerView  左右滑动时,需要获取当前显示在页面上的选项卡

步骤:

1. RecyclerView  添加addOnScrollListener,回调中可以直接获取对应Item Index

xxxRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
	@Override
	public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
			super.onScrollStateChanged(recyclerView, newState);

			if (newState == RecyclerView.SCROLL_STATE_IDLE) {
					// 当 RecyclerView 的滑动事件完成(滑动停止)时,会回调到这里
					LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
					// 获取当前页面内第一个完整显示的Item,由于我的子Item自动占满页面宽度,所以当前页面内完整显示的第一个Item,就是我所需要的Item
					int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
					int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
					int firstCompletelyVisibleItemPosition = layoutManager.findFirstCompletelyVisibleItemPosition();
					int lastCompletelyVisibleItemPosition = layoutManager.findLastCompletelyVisibleItemPosition();
					// 判断获取的position不为-1,则为有效数据
					if (firstCompletelyVisibleItemPosition != -1) {
							currentIndex = firstCompletelyVisibleItemPosition;
							// 显示当前选项卡的位置(对于用户来讲,当前选项卡的位置为position+1)
							String currentLocation = (firstCompletelyVisibleItemPosition + 1) + "";
							if (tvCurrent != null) {
									tvCurrent.setText(currentLocation);
							}
							// 获取当前选项卡的viewHolder实例,可以自行做业务逻辑处理
							RecyclerView.ViewHolder viewHolder = xxxRecyclerView.findViewHolderForAdapterPosition(firstCompletelyVisibleItemPosition);
							if (viewHolder != null) {
									View itemView = viewHolder.itemView;
									EditText editText = (EditText)itemView.findViewById(R.id.et_xxx);
									editText.requestFocus();
							}
					}
			}
	}

	@Override
	public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
			super.onScrolled(recyclerView, dx, dy);

			// 这个方法会在 RecyclerView 滚动时持续回调,你也可以在这里获取和处理你关心的 item 的位置
	}
});

  

标签:int,recyclerView,Item,Android,RecyclerView,layoutManager,firstCompletelyVisibleI
From: https://www.cnblogs.com/uoky/p/18236526

相关文章

  • Android Adapter中组件EditText文本变化监听 addTextChangedListener
    问题背景:使用适配器显示一个列表,列表中Item中有EditText,滚动时会有EditText组件内容消失步骤:1.在Adapter中,添加interfacepublicinterfaceOnEidtTextChangeListener{ voidxxxTextChanged(CharSequences,intstart,intbefore,intcount); voidgetXxxEditedCount(......
  • Android 水平滚动List 一项Item占满一页宽 设定单次滑动一次切换一次Item
    背景:水平滚动的List,一项Item占满页面宽度,相当于数量不定的选项卡,每个选项卡占满一页,左右滑动时,如何限制一次只能滑动一个Item步骤:1.水平滚动布局linearLayoutManager=newLinearLayoutManager(this);linearLayoutManager.setOrientation(LinearLayoutMana......
  • douyin商品评论数据接口(douyin.item_review)丨douyin平台实时API接口指南
    抖音商品评论数据接口(douyin.item_review)是抖音平台提供的一项实时API接口服务,旨在帮助商家和开发者获取、管理商品的评论数据。以下具体分析:接入准备申请互动管理权限:在抖音开放平台的管理中心,应用管理部分的详情中,找到接口权限,并申请“互动管理”权限。通过后,状态会显示为......
  • Android基础-Log管理
    在Android系统中,log管理机制扮演着至关重要的角色,它为开发者提供了跟踪、调试和优化应用程序的强大工具。以下将详细阐述Android中的log管理机制,包括其架构、日志类型、系统框架、使用方式以及管理策略等方面。一、AndroidLog管理机制概述Android的log管理机制是一个集中式......
  • Android基础-资源管理
    在深入探讨Android系统的资源管理机制时,我们首先需要理解Android作为一个开放源代码的移动操作系统,其资源管理机制的核心目的是确保应用程序能够高效、安全地访问和使用系统资源,从而为用户提供流畅、稳定的用户体验。以下是对Android系统资源管理机制的详细解析。一、资源分类......
  • Android Media Framework(二)OpenMAX 类型阅读与分析
    OMXILSpec将API划分为ControlAPI、DataAPI、ExtensionAPI,所谓ControlAPI指的是ILClient用于控制组件的接口,包含调用OMXCore和OMXComponent要用的接口与相关结构体,这一篇我们将重点阅读与ControlAPI相关的宏、结构体与枚举。1、OMXIL目录结构OMXILAPI由一组头文件......
  • android antirollback verno 获取方法
    ReadRollbackIndex.exe获取调查avbVBMeta结构体typedefstructAvbVBMetaImageHeader{ /* 0:Fourbytesequalto"AVB0"(AVB_MAGIC).*/ uint8_tmagic[AVB_MAGIC_LEN]; /* 4:Themajorversionoflibavbrequiredforthisheader.*/ uint32_tr......
  • aandroid studio 通过intent向另一个界面传输信息
    基本流程和上一篇一样地址:https://www.cnblogs.com/yansans/p/18235968 只是再最后加了一句代码intent.putExtra("name",name.getText().toString());这句代码用键值对比较好理解,是将从前端传递来的name的值命名为“name”并传递给MainActivity2 MainActivity2的后......
  • Android studio后端接收数据步骤
    最近记性越来越差,简单的实验居然磨了我三个小时只好把详细步骤放出来,防止再忘记 前端<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="htt......
  • Android视频开发入门: VideoView、MediaPlayer、 FFmpeg、exoplayer...
    现在,视频功能是越来越普遍的需求。本文将提供一个关于Android视频开发的入门指南,帮助读者快速掌握视频播放、录制和处理等基本功能。1、概述在Android平台上,视频开发主要涉及以下几个方面:视频播放与控制视频录制与处理视频编解码与格式转换视频流媒体与直播接下来,我......