如何在按钮单击时获得适配器类中的点击列表项位置
Posted
技术标签:
【中文标题】如何在按钮单击时获得适配器类中的点击列表项位置【英文标题】:How to get tapped List Item position in Adapter class on button click 【发布时间】:2015-03-22 05:46:07 【问题描述】:我试图在按钮单击时获取适配器类中的点击列表项位置,但没有成功
首先我必须点击列表项,然后想要删除该行
得到这样的东西:D/strPosition::-(1922): com.and.field.Transport@b3ddf5c0
使用以下代码:
viewHolder.btnDelete.setOnClickListener(new OnClickListener()
@Override
public void onClick(final View v)
strPosition = arrayList.get(position).toString();
Log.d("strPosition::-", strPosition);
// and then want to delete that row using tapped position
strName = arrayList.get(position).getName().toString();
);
【问题讨论】:
你不是已经有这个职位了吗?在你的变量命名位置?我不明白这个问题。 【参考方案1】:您不能在onClick
方法中使用position
,而是使用下一个方法
viewHolder.btnDelete.setTag(position);
viewHolder.btnDelete.setOnClickListener(new OnClickListener()
@Override
public void onClick(final View v)
Integer taggedPosition = (Integer) v.getTag();
Log.d("Position::-", Integer.toString(taggedPosition));
strName = arrayList.get(taggedPosition).getName().toString();
);
【讨论】:
@Sun 你使用了ArrayAdapter
,所以你不需要在那里存储arrayList
,因为你已经将它传递给了超级构造函数。改用适配器的方法get、remove等。
为什么不使用 OnItemClickListener ? onItemClick 将给出点击项目的位置,无需设置标签或类似的东西......
@2Dee 因为作者那里有按钮,它执行另一个操作(删除)与项目单击(例如查看)
@gio 请检查:***.com/questions/28107440/…以上是关于如何在按钮单击时获得适配器类中的点击列表项位置的主要内容,如果未能解决你的问题,请参考以下文章