关于Android ListView position错位问题

天晓明月 2016-05-10 07:08:34
在Adapter中写监听的时候,往往容易出现position错位的问题。
当你点击一个item的时候,item所点击到的position值是与方法中当前的position值是不同的。position记录的是getView方法执行时的条目位置,而不是点击的条目位置。要想获取点击时的条目位置,需要将点击时的position保存为另一个变量,然后再使用:

viewHolder.ivImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//在这里保存点击的position,
// 如果需要在监听之外对item做操作,可以变为全局变量
int pos = position;
}
});
...全文
420 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lance丶紫竹 2016-12-05
  • 打赏
  • 举报
回复


可以直接在getView()里设置监听事件啊!
xjz729827161 2016-12-05
  • 打赏
  • 举报
回复
在Adapter的getView(),中一般是直接给view控件设置tag,通过setTag()和getTag()来传递信息,在getView里面所对应的position是正确的。
jeky_zhang2013 2016-05-10
  • 打赏
  • 举报
回复
可以打印出来,看不一样的差别在哪
sagittarius1988 2016-05-10
  • 打赏
  • 举报
回复
listview中有header吧
节操在此 2016-05-10
  • 打赏
  • 举报
回复
一般是final引起的

80,350

社区成员

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

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