RefreshListView中onItemClick点击错位

在使用RefreshListView的时候。发现有使用

	/****
	 * parent.getAdapter().getItem(position)√
	 * adpter.getItem(id);√
	 * adpter.getItem(position -listView.getHeaderViewsCount());√
	 *  adpter.getItem(position); X
	 *  id adapter.getId(position);
	 */
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id) {
		
		String item = (String) adpter.getItem(position);
		Toast.makeText(this, "position:" + position + " item:" + item+" id:"+id, 0).show();
	}
结果发现点击事件得到的结果是错位的。

查阅资料发现是由于listView加了headView后,点击事件里面的position是加上了headView。

要获取正确的位置Item,代码上面凝视的几个方法parent.getAdapter().getItem(position)。adpter.getItem(id);adpter.getItem(position -listView.getHeaderViewsCount());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 RecyclerView 的适配器获取点击item,可以按照以下步骤进行操作: 1. 在适配器的 ViewHolder 设置点击事件监听器。在 ViewHolder 的构造函数或者 onBindViewHolder() 方法,为 item 设置点击事件监听器。例如: ```java public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public MyViewHolder(View itemView) { super(itemView); itemView.setOnClickListener(this); } @Override public void onClick(View view) { // 处理点击事件 int position = getAdapterPosition(); // 获取点击item 的位置 // 进一步处理点击事件,例如,可以调用接口的回调方法将点击item 传递给外部 } } ``` 2. 在 RecyclerView 的适配器定义一个接口,并提供一个方法用于回调点击item。例如: ```java public interface OnItemClickListener { void onItemClick(int position); } // 在适配器添加成员变量和方法 private OnItemClickListener mListener; public void setOnItemClickListener(OnItemClickListener listener) { mListener = listener; } ``` 3. 在 onBindViewHolder() 方法,为 ViewHolder 设置点击事件监听器,并在点击事件调用接口的回调方法。例如: ```java @Override public void onBindViewHolder(MyViewHolder holder, int position) { // 绑定数据到 ViewHolder // ... holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mListener != null) { mListener.onItemClick(position); } } }); } ``` 4. 在使用 RecyclerView 的地方,设置适配器的点击事件监听器。例如: ```java adapter.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(int position) { // 处理点击事件,获取点击item // position 参数即为点击item 的位置 } }); ``` 通过以上步骤,你就可以在 RecyclerView 的适配器获取点击item,并进行相应的处理了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值