android - 如何从适配器外部获取我的 recyclerview 中显示的项目的位置?
问题描述
我有RecyclerView
一个固定数量的项目。我已经实现了一个SnapHelper
以确保一次只能CardView
看到一个项目。如何CardView
从适配器类外部获取位置?该位置将需要返回onCreate
到onSwipe
下一个CardView
项目。我尝试setTag()
在onBindViewHolder
课堂上和getTag()
活动中使用 a,但这似乎不起作用。
当前代码:
LinearLayoutManager linearLayoutManagerOne = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
recyclerHomeFavouriteTable.setLayoutManager(linearLayoutManagerOne);
SnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(recyclerHomeFavouriteTable);
解决方案
获取回收站视图项目位置。有两种方法
getLayoutPostion()
根据最新的布局传递返回 ViewHolder 的位置。这个位置主要被 RecyclerView 组件用来保持一致,而 RecyclerView 懒惰地处理适配器更新。
getAdapterPosition()
返回此 ViewHolder 表示的项目的适配器位置
它们都属于ViewHolder
,所以我认为,您可以为物品持有人设置标签。然后获取ViewHolder
根据标签,然后用于ViewHodler
获取位置。
推荐阅读
- r - 将 purrr::map 与传单一起使用
- html - CSS从底部动画div从它的高度
- python - 我的 python websocket 连接似乎没有收到任何消息
- .net - 使用 BindingList 绑定到对象的 DevExpress GridControl 不更新控件
- excel - VBA用于单元格值输入后单元格范围内的自动公式计算
- javascript - JS 中的图像未使用 context.drawImage() 加载到画布 - 基于 Tile 的游戏
- php - PHPUnit AbstractPHPProcess 反序列化
- php - 为什么数据库不更新 codeigniter
- php - 通过 preg_replace_callback 用 Ascii 替换所有十六进制
- python-3.x - 给定员工信息字典列表,如何在适用时使用 DICT 或 LIST 组合按 ID 号查找