如何在按钮单击时获得适配器类中的点击列表项位置

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/…

以上是关于如何在按钮单击时获得适配器类中的点击列表项位置的主要内容,如果未能解决你的问题,请参考以下文章

单击列表视图项

如何在自定义适配器上实现 onClickListener?

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

从具有按钮的 ListView 获取列表项的位置

设置列表项的值时自定义适配器中的空指针异常

如何在阵列适配器中长按时设置按钮的可见性