在ListView中获得位置

时间:2012-02-01 09:04:37

标签: android 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) {
}

5 个答案:

答案 0 :(得分:35)

尝试

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

答案 1 :(得分:5)

你可以这样试试。

第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();
  }

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果我正确理解了您的问题,那么ListView的每一行都有一个按钮,您想知道哪一行收到按钮点击。你是如何在按钮上做setOnClickListener()的?我问这个的原因是 - 如果你为每个按钮设置OnClickListener,你就已经知道了那个按钮的位置。

答案 4 :(得分:1)

您还应该阅读ListView的文档,甚至查看可用的方法及其示例代码。

了解您的文档。