在ListView中获取位置

我使用ListView来显示几个项目。 我的row.xml如下所示:

<TextView android:text="text" android:id="@+id/tvViewRow" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <Button android:text="Click me!" android:id="@+id/BtnToClick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="myClick"> </Button> 

我在Activity中定义了myClick,如下所示:

 public void myClick (View v) { LinearLayout vwParentRow = (LinearLayout)v.getParent(); //How to get the position } 

如何知道点击的位置? 该位置的意思相同的方法onListItemClick的。

 @Override protected void onListItemClick(ListView l, View v, int position, long id) { } 

Solutions Collecting From Web of "在ListView中获取位置"

尝试

 public void DetailClick(View v) { ListView lv = getListView(); int position = lv.getPositionForView(v); } 

你可以试试这个

第1步:在您的自定义适配器

 @Override public view getView(int position, View convertView, ViewGroup parent){ .......//Perform your logic convertView.findViewById(R.id.BtnToClick).setTag(position); return convertView; } 

第2步:在onclick监听器

  public void myClick (View v) { LinearLayout vwParentRow = (LinearLayout)v.getParent(); position=(Integer) v.getTag(); } 

你也应该阅读ListView的文档,甚至可以看看可用的教程。

知道你的文档。

是的,onListItemClick中的位置与在列表中单击的项目的位置相同。

如果我正确理解你的问题,你在ListView每一行都有一个button,并且你想知道哪一行接收到了button的点击。 你如何做button上的setOnClickListener() ? 我问这个的原因是 – 如果你为每个button设置OnClickListener ,你已经知道该button的位置。