RecyclerView 点击item问题

灵犀一指 2017-07-17 03:10:16


如上图写的点击回调事件会报出错误:Do not treat position as fixed; only use immediately and call holder.getAdapterPosition() to look it up later

搜索了之后是说不要固定position,而是当你什么时候需要用的时候直接通过holder.getAdapterPosition来取到,

但是holder.getAdapterPosition取到的是视图在整个RecyclerView 的位置,如果RecyclerView 添加了头部视图那么这个位置也包含头部视图占据的位置(比如:我点击第一个item本来position为0,但是我添加一个头部视图之后这个position就变成1了),
我用到的是一个第三方带下拉刷新上拉加载的RecyclerView ,所以这样写的话就会报数组越界;

然后写holder.getAdapterPosition-1,但是这样写的话也太特定了,比如在后续代码中可能会添加一个或者多个头部视图了那这样写明显也是不对的;

然后我现在是这样写的“:


这样当鼠标放在onBindViewHolder方法的position处时是没有提示错误的

但是看stackoverflow上面将好像最好也不要这样写;

所以我现在迷糊了啊,到底是要怎么来获取这个position了,

如果我在item里面还设置了一个Button,我需要获取这个item的position传给Button的点击回调
...全文
3013 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
海栗 2017-07-17
  • 打赏
  • 举报
回复
可以把position保存在view.setTag里
listener在viewholder里注册

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧