【问题标题】: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();                         

            }
        });

【问题讨论】:

  • 你不是已经有这个职位了吗?在你的变量命名位置?我不明白这个问题。

标签: android android-listview android-arrayadapter custom-adapter


【解决方案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,因为你已经将它传递给了超级构造函数。改用适配器的方法getremove等。
  • 为什么不使用 OnItemClickListener ? onItemClick 将给出点击项目的位置,无需设置标签或类似的东西......
  • @2Dee 因为作者那里有按钮,它执行另一个操作(删除)与项目单击(例如查看)
猜你喜欢
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
相关资源
最近更新 更多